下面将介绍 docker-compose
子命令的使用。也可以通过运行 docker-compose --help
来查看这些信息。
build
1 | 用法:build [options] [SERVICE...] |
构建服务并打上project_service
风格的标签(如:composetest_db
)。如果你更改了服务的Dockerfile
或者构建目录下的内容,需要运行docker-compose build
重新构建服务。
help
1 | 用法:help COMMAND |
显示命令的帮助信息及用法教程。
kill
1 | 用法:kill [options] [SERVICE...] |
通过发送SIGKILL
信号来强制终止运行中的容器,也可以发送指定的信号量,例如:
1 | $ docker-compose kill -s SIGINT |
ps
1 | 用法:ps [options] [SERVICE...] |
列出容器。
restart
1 | 用法:restart [options] [SERVICE...] |
重启服务。
run
1 | 用法:run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...] |
对服务运行的命令。例如,以下命令启动web服务并运行bash命令
1 | $ docker-compose run web bash |
run
命令,将使用服务中已经定义的配置来创建运行一个新的容器。也就是说,如此创建的容器,将会使用相同的挂载卷、容器连接等相同的配置,但它们依旧可以存在差异。
第一个区别是,可以使用run
命令覆盖服务中指定的运行命令。例如,web
服务中的配置指定的运行命令为bash
,那么docker-compose run web python app.py
将使用python app.py
来覆盖它。
第二个区别是,docker-compose run
命令不会创建任何服务配置中指定的端口映射,这样可以防止多个容器映射同一端口的冲突。如果你需要使得服务的端口创建并映射到主机,需要指定--service-ports
标记,如下:
1 | $ docker-compose run --service-ports web python manage.py shell |
或者可以手动指定端口映射,和使用docker run
一样,使用--publish
或-p
选项:
1 | $ docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell |
如果启动一个带有容器连接的服务,run
命令将首先检查连接到的服务是否已运行,如果是停止状态,将会启动它,直到所有的相关服务都处于正在运行状态,才会执行你创建的命令。例如:
1 | $ docker-compose run db psql -h db -U docker |
这将创建一个与PostgreSQL容器db
交互服务。
如果你不希望启动相关联容器,可以使用--no-deps
标记:
1 | $ docker-compose run --no-deps web python manage.py shell |
start
1 | 用法:start [SERVICE...] |
启动服务中已经存在的容器。
up
1 | 用法:up [options] [SERVICE...] |
对服务,构建镜像、(重新)创建容器、启动容器。
该命令还将启动任何相关的且没有被启动的服务。
docker-compose up
命令将显示所有容器的输出,命令结束时,所有容器都将关闭。运行docker-compose up -d
将在后台启动运行容器。
如果服务中已经存在运行中的容器了,并且在容器创建后更改服务配置或者镜像,docker-compose up
命令将会停止当前容器(保存挂载卷)并重新构建启动容器。当然,也可以通过--no-recreate
选项来避免重新构建。
使用--force-recreate
标记,可以强制停止并重构所有容器。
logs
1 | 用法:logs [options] [SERVICE...] |
显示服务输出的日志内容。
port
1 | 用法:port [options] SERVICE PRIVATE_PORT |
打印服务中端口绑定对应的主机端口。
pull
1 | 用法:pull [options] [SERVICE...] |
拉取服务镜像。
rm
1 | 用法:rm [options] [SERVICE...] |
删除停止的服务容器。
scale
1 | 用法:scale [SERVICE=NUM...] |
设置一个服务需要运行的容器数量。
参数形式为service=num
。例如:
1 | $ docker-compose scale web=2 worker=3 |
stop
1 | 用法:stop [options] [SERVICE...] |
停止容器而不移除,可以通docker-compose start
重新启动。
QA
上面的doc并非本人撰写,但是我忘记在哪里看到并且下载到本地了,如有版权问题,请联系我补充更正,谢谢。