使用docker
docker 介绍
docker 容器搭建
docker 基础命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 重启 docker 服务 systemctl restart docker
# 开启 docker 服务 systemctl start docker
# 查看 docker 服务状态 systemctl status docker
# 搜索镜像 docker search nginx
# 拉取镜像 docker pull nginx:1.24.0
# 查看本机存在的镜像 docker images
# 查看本机存在的容器 docker ps -a
# 查看本机正在运行的容器 docker ps
|
docker 容器命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| docker run -itd \ -p 80:80 \ -p 443:443 \ -e USERNAME=aaa \ -e PASSWORD=bbb \ -v /mnt/ftp:/home/vsftpd \ --name=nginxweb \ --restart=always \ nginx:1.24.0
# run 创建容器后直接运行 # -it 表示交互, -d 表示后台运行。简写就是 -itd # -p 表示端口映射,前面是宿主机端口,后面是容器端口 # -e 设置容器的变量名和值 # -v 表示目录映射,前面是宿主机目录,后面是容器目录 # --name=nginxweb 定义创建容器的名称为 nginxweb # --restart=always 表示容器自动重启 # nginx:1.24.0 表示创建容器使用的镜像和镜像版本
# 进入容器 docker exec -it nginxweb bash
# 停止容器 docker stop nginxweb
# 启动容器 docker start nginxweb
# 重启容器 docker restart nginxweb
# 查看容器的ip地址 docker inspect nginxweb | grep '"IPAddress"' docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress }}' nginxweb
# 删除容器 需要先停止容器 docker stop nginxweb && docker rm nginxweb
# 删除镜像 需要先删除使用此镜像的所有容器 docker stop nginxweb && docker rm nginxweb && docker rmi nginx:1.24.0
|
docker 网络操作命令
1 2 3 4 5 6 7 8 9 10
| docker network ls docker network inspect mynet docker network inspect mynet | grep '"Subnet"' docker network inspect mynet | grep '"Gateway"' docker network rm mynet
#不在同一网段内的容器,ping不通 #把容器 nginxtest 加入到 mynet 中,这时此容器有两个ip docker network connect mynet nginxtest
|
通过 dockerfile 文件创建镜像
先进入 dockerfile 文件所在目录下执行命令
1 2 3
| # 注意最后有一个.号 docker build -t nginxdiy:v1.0 . # nginxdiy:v1.0 表示创建的镜像名称和版本号
|
使用 docker compose 创建容器
把所有docker命令写在compose.yml格式文件中,使用docker compose执行创建容器
1 2 3
| docker compose -f compose.yml up -d # -f 指定文件路径 # -d 表示后台运行
|
compose.yml 格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| version: '3' networks: mynet: ipam: config: - subnet: 172.20.0.0/16 services: dc1: image: nginx:1.24.0 hostname: nginxHost_s1 ports: - "81:80" - "444:443" volumes: - /www1/web:/usr/share/nginx/html - /www1/conf_s:/etc/nginx/conf.d - /www1/logs:/var/log/nginx - /www1/ssl:/ssl container_name: nginx_s1 restart: always stdin_open: true tty: true networks: - mynet
|
为容器追加参数
1 2 3 4
| # 为容器 nginxtest 加上重启参数 --restart=always docker update --restart=always nginxtest # 查看更多帮助 docker update --help
|
为docker添加国内镜像源,可以加速下载镜像
1 2 3 4 5
| cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://test.example.com/"] } EOF
|
防止 systemctl restart docker
执行时,容器也跟着重启
1 2 3 4 5
| cat > /etc/docker/daemon.json << EOF { "live-restore": true } EOF
|