《Docker快速入门(提高篇)》Docker Compose实用指南

Dockerfile用于构建自定义镜像,Docker Compose用于容器管理。

一、Compose简介

1、Compose的作用

编写docker-compose.yml文件,将docker run命令的各项参数写到该文件中,方便运行,并且,还可以批量管理容器。

2、安装Compose

对于Windows用户和MacOS用户,安装Docker Desktop后,就已经自带Docker Compose,不用额外安装。

对于Linux用户,安装Compose,请参考Compose官方说明:https://github.com/docker/compose

3、验证安装

打开命令提示符(或终端),输入docker-compose命令,如下所示,表示已安装Compose。

4、官方文档

官方指南https://docs.docker.com/compose/compose-file/

二、Compose用法

以Nginx为例,介绍Compose用法。

1、命令回顾

回顾下,基础篇中Nginx容器相关命令:

# 创建并运行容器
docker run -d -p 8888:80 ^
-v D:/tmp/nginx/config:/etc/nginx ^
-v D:/tmp/nginx/logs:/var/log/nginx ^
-v D:/tmp/nginx/html:/usr/share/nginx/html ^
--name nginx nginx:latest

# 启动容器
docker start nginx

# 重启容器
docker restart nginx

# 停止容器
docker stop nginx

# 删除容器
docker rm nginx

创建容器前,还需要拉取Nginx镜像:

docker pull nginx

2、编写docker-compose.yml

在空白文件夹下,如D:/tmp/nginx/,之前使用的数据卷就在这个目录,创建一个文件,命名为docker-compose.yml,将docker run的各项内容填充其中:

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    restart: always
    ports:
      - 8888:80
    volumes:
      - D:/tmp/nginx/config:/etc/nginx
      - D:/tmp/nginx/logs:/var/log/nginx
      - D:/tmp/nginx/html:/usr/share/nginx/html

说明:

  • 第一行,services:固定写法,表示docker-compose.yml下的服务集合
  • 第二行,nginx:服务名,表示其下定义的是nginx服务
  • 第三行开始:
    • image:指定基础镜像
    • container_name:指定容器名称
    • restart:指定服务重启规则,always表示该服务随Docker一起启动
    • ports:指定映射端口
    • volumes:指定数据卷

3、启动容器

在docker-compose.yml同级目录下,执行启动命令:

docker-compose up -d

 

以上提示,表示Nginx容器创建好了,访问http://localhost:8888/

非常舒适,不用输入docker run中冗长的参数,避免了人为失误,增强了命令的可维护性。

4、查看容器

docker-compose ps

 

5、删除容器

docker-compose down

 

运行中的容器,不需要先停止再删除,直接一步到位,Compose的便捷性就体现出来了。

三、补充

1、关于version

在docker-compose.yml中,没有version: "3.8"。

这个跟安装的Docker Engine版本有关,输入docker version可查阅。反正,现在的版本不用写,具体可参阅https://docs.docker.com/compose/compose-file/compose-versioning/

2、关于restart

总共有4种,always是其中一种:

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

参阅https://docs.docker.com/compose/compose-file/#restart

3、数据卷路径

数据卷还可以使用相对路径,上述Nginx的配置,还可以修改为:

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    restart: always
    ports:
      - 8888:80
    volumes:
      - ./config:/etc/nginx
      - ./logs:/var/log/nginx
      - ./html:/usr/share/nginx/html

4、关于MySQL

与Nginx相比,MySQL在docker run命令中指定了ROOT账号的密码,可以这样处理,完整写法如下:

services:
  mysql:
    image: mysql:latest
    container_name: mysql
    restart: always
    ports:
      - 3366:3306
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - ./conf:/etc/mysql
      - ./logs:/var/log/mysql
      - ./data:/var/lib/mysql

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值