前言

docker-compose是编排容器的利器,特别是涉及多个容器的运行时,不需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,通过docker-compose,它可以轻松完成容器编排,并且提供了scale扩容功能。

安装

在github官网上有提供安装的方式,直接下载二进制包进行安装即可。

下载地址:https://github.com/docker/compose/releases/

安装命令:

1
2
3
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

然后,验证安装情况:

1
docker-compose --version

官网有介绍,如果你们mac或者windows用户,正常情况,你安装了docker客户端就默认安装了docker-compose。

卸载

如果使用curl安装的,通过以下命令卸载Docker Compose :

1
sudo rm /usr/local/bin/docker-compose

实战练习

构建redis数据库

1,我们使用redis来做演示,首先,我们先看看命令行直接运行redis的方式:

1
docker run -d -p 6379:6379 --name some-redis -v /my/own/redis/data:/data redis:3.2.9 redis-server --appendonly yes --requirepass "password123"

2,然后,我们使用docker-compose来参考构建,我们创建一个docker-compose.yml文件,并添下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
version: "3"
services:
redis:
image: redis:3.2.9
volumes:
- data:/my/own/redis/data
ports:
- "6379:6379"
restart: always
command: redis-server --appendonly yes --requirepass "password123"
volumes:
data:

3,执行构建

1
docker-compose up -d
常用命令

下面列出几个时常会用到的docker-compose命令

config

1
2
用法:docker-compose config 
解释:验证compose yml文件格式是否正确,若正确则显示配置,若格式错误显示错误原因

ps

1
2
用法: docker-compose ps [options] [SERVICE...] 
解释:列出项目中目前的所有容器。 选项: -q 只打印容器的 ID 信息

images

1
2
用法:docker-compose images 
解释:列出项目中的所有容器镜像

up

1
2
3
4
5
6
7
8
9
10
11
12
13
用法:docker-compose up [options] [SERVICE...] 
解释:通常使用“docker-compose up -d”自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作,在后台运行。
如果服务容器已经存在,up 将会尝试停止容器,然后重新创建,以保证新启动的服务匹配 docker-compose.yml文件的最新内容。
如果用户不希望容器被停止并重新创建,可以添加“--no-recreate”指令,将只会启动处于停止状态的容器,而忽略已经运行的服务。
如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d <SERVICE_NAME> 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。
选项:
-d 在后台运行服务容器
--no-color 不使用颜色来区分不同的服务的控制台输出
--no-deps 不启动服务所链接的容器
--force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用
--no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用
--no-build 不自动构建缺失的服务镜像
-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)

start

1
2
用法:docker-compose start [SERVICE...] 
解释:启动已经存在的服务容器。

stop

1
2
用法: docker-compose stop [options] [SERVICE...] 
解释:停止已经处于运行状态的容器,但不删除它 选项: -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒 )

restart

1
2
用法:docker-compose restart [options] [SERVICE...] 
解释:重启项目中的服务

rm

1
2
3
用法:docker-compose rm [options] [SERVICE...] 
解释:删除所有(停止状态的)服务容器,推荐先执行 docker-compose stop 命令来停止容器。
选项: -f, --force 强制直接删除,包括非停止状态的容器。尽量不要使用该选项 -v 删除容器所挂载的数据卷

logs

1
2
用法:docker-compose logs [options] [SERVICE...] 
解释:查看服务容器的输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分,可以通过 --no-color 来关闭颜色。

scale

1
2
3
用法:docker-compose scale [options] [SERVICE=NUM...] 
解释:设置指定服务运行的容器个数,一般在需要进行扩容的时候用到,通过 service=num 的参数来设置数量。
例如: docker-compose scale mysql=3 redis=2 将启动3个容器运行mysql服务,2个容器运行redis服务。