一、linux安装Docker
1、卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4、启动和校验
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
# 设置开启启动
systemctl enable docker
# 查看docker进程 不报错说明安装成功
docker ps
#查看docker版本
docker -v
5、成功启动
[root@localhost yum.repos.d]# systemctl start docker
[root@localhost yum.repos.d]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
二、Docker部署mysql
1、docker安装mysql
docker run -d \ # 创建并运行一个镜像 -d 后台运行
--name mysql \ # 镜像的唯一名字
-p 3306:3306 \ # 端口映射 主机端口:镜像端口
-e TZ=Asia/Shanghai \ # 镜像指定环境变量
-e MYSQL_ROOT_PASSWORD=123 \ # 镜像指定环境变量
mysql # 指定运行的镜像 一般后面加上版本 mysql:5.7 没有加代表指定最新
2、连接测试
3、运行多个mysql
docker run -d \
--name mysql2 \
-p 3307:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
[root@localhost yum.repos.d]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74716e67e1aa mysql "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql2
85ab2b83c518 mysql "docker-entrypoint.s…" 20 minutes ago Up 20 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
三、Docker 部署nginx
1、从镜像仓库拉去nginx镜像
#拉取镜像
docker pull nginx
#查看本地镜像
docker images
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 56b21e040954 5 days ago 632MB
nginx latest a8758716bb6a 3 months ago 187MB
2、生成容器
[root@localhost ~]# docker run -d --name nginx -p 80:80 nginx:latest
b5983400e20f11ae9cba6630150faec29089d35072759772c8fdd2c14e6e7913
3、查看运行中的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5983400e20f nginx:latest "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
4、查看首页
四、Docker常见命令
1、镜像相关命令
# 从镜像仓库拉取到本地镜像
docker pull
# 将本地镜像推到镜像仓库中
docker push
# 查看本地镜像
docker images
# 删除本地镜像
docker rmi
例1:docker rmi nginx:latest
# 构建自定义镜像
docker build
# 将本地镜像打包
docker save -o '包名.tar' '镜像名字':'版本'
例1:docker save -o ./nginx.tar nginx:latest
# 将打包的镜像加入到本地镜像
docker load
例1:docker load -i ./nginx.tar
2、容器相关命令
# 创建并运行容器
docker run
例1:docker run -d --name nginx -p 80:80 nginx:latest
-d 后台运行
# 停止容器运行
docker stop
# 运行容器
docker start
# 查看运行中的容器
docker ps
-a #查看所有容器包括已经创建的关闭的
# 删除容器
docker rm
-f 强制删除
# 查看容器日志
docker logs
-f 持续查看日志
# 进入容器内部运行命令
docker exec
docker exec -it nginx bash
# 查看容器的详细信息
docker inspect nginx
五、数据卷
数据卷是一个虚拟目录 用来连接docker容器内的目录和外部目录的桥梁
# 创建数据卷
docker volume create
# 查看所有数据卷
docker volume ls
# 删除指定数据卷
docker volume rm
# 查看某个数据卷详情
docker volume inspect
# 清楚数据卷
docker volume prune
1、挂载数据卷
挂载数据卷只能在创建容器的时候挂载,所以使用·docker run·命令,这里挂载nginx的静态目录
[root@localhost ~]# docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx:latest
b0551d942db56cc58687123c6136a16d777325975e8098b4db1a25507e8d6039
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 89ac97fada9ab5d4692a08d7c1a39a0dfb119f12822616882bcb52606aab65a0
local 26183b839d834912d0568ec1fd34f9465a02ac97e81c71fe78df3436c6b7c428
local html
[root@localhost ~]# docker volume inspect html
[
{
"CreatedAt": "2024-01-24T15:47:26+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/html/_data",
"Name": "html",
"Options": null,
"Scope": "local"
}
]
查看挂载的目录
[root@localhost ~]# cd /var/lib/docker/volumes/html/_data
[root@localhost _data]# ll
total 8
-rw-r--r--. 1 root root 497 Oct 24 21:46 50x.html
-rw-r--r--. 1 root root 615 Oct 24 21:46 index.html
2、本地目录挂载
本地关在和挂载数据卷差不多只是本地目录的路径要写绝对路径
docker run -d --name nginx -p 80:80 -v /html:/usr/share/nginx/html