首先介绍几个术语。
可见,一个项目可以由多个服务(容器)关联而成, Compose 面向项目进行管理。
最常见的项目是 web 网站,该项目应该包含 web 应用和缓存。
下面我们用 Python 来建立一个能够记录页面访问次数的 web 网站。
docker-compose.yml
:
version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。
执行 docker-compose [COMMAND] --help
或者 docker-compose help [COMMAND]
可以查看具体某个命令的使用格式。
docker-compose
命令的基本的使用格式是:
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
-f, --file FILE
:指定使用的 Compose 模板文件,默认为 docker-compose.yml ,可以 多次指定。-p, --project-name NAME
:指定项目名称,默认将使用所在目录名称作为项目名。--x-networking
:使用 Docker 的可拔插网络后端特性--x-network-driver DRIVER
:指定网络后端的驱动,默认为 bridge--verbose
:输出更多调试信息。-v, --version
:打印版本并退出。web
项目中的一个 db
容器,可能是 web_db
。
可以随时在项目目录下运行 docker-compose build
来重新构建服务。docker-compose build [选项] [SERVICE...]
选项:
--force-rm
:删除构建过程中的临时容器。--no-cache
:构建镜像过程中不使用 cache(这将加长构建过程)。--pull
:始终尝试通过 pull 来获取更新版本的镜像。docker-compose config [选项]
选项:
-q, --quiet
:只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。--services
: 打印服务名,一行一个验证和查看compose文件配置。up 命令
所启动的容器,并移除网络。docker-compose down [选项]
选项:
--rmi type
:删除镜像,类型必须是:
-v, --volumes
:删除卷。--remove-orphans
:删除Compose文件中未定义的服务。docker-compose exec [选项] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
获得一个命令的帮助。
查看各个服务容器内运行的进程。
SIGKILL
信号来强制停止服务容器。docker-compose kill [选项] [SERVICE...]
支持通过 -s 参数来指定发送的信号,例如通过如下指令发送 SIGINT 信号。
$ docker-compose kill -s SIGINdocker-compose logs [选项] [SERVICE...]
选项:
--no-color
单色输出,不显示其他颜色。-f, --follow
跟踪日志输出,就是可以实时查看日志。-t, --timestamps
显示时间戳--tail
从日志的结尾显示,--tail=200
,显示日志输出。docker-compose pause [SERVICE...]
docker-compose unpause
进行恢复。
$ docker-compose unpause redis Unpausing dockerstudy_redis_1 ... donedocker-compose port [选项] SERVICE PRIVATE_PORT
选项:
--protocol=proto
指定端口协议,tcp(默认值)或者 udp。--index=index
如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1)。docker-compose ps [选项] [SERVICE...]
选项:
-q
:只打印容器的 ID 信息。docker-compose pull [选项] [SERVICE...]
选项:
--ignore-pull-failures
:忽略拉取镜像过程中的错误。docker-compose pull [选项] [SERVICE...]
选项:
--ignore-push-failures
:忽略拉取镜像过程中的错误。docker-compose run [选项] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
python --version
命令。
默认情况下,如果存在关联,则所有关联的服务将会自动被启动,除非这些服务已经在运行中。选项:
-d
后台运行,输出容器名。--name NAME
为容器指定一个名字。 --entrypoint CMD
覆盖默认的容器启动指令。 -e KEY=VAL
设置环境变量值,可多次使用选项来设置多个环境变量。 -u, --user=""
指定运行容器的用户名或者 uid。 --no-deps
不自动启动关联的服务容器。 --rm
运行命令后自动删除容器, d 模式下将忽略。 -p, --publish=[]
映射容器端口到本地主机。 --service-ports
配置服务端口并映射到本地主机。 -T
不分配伪 tty,意味着依赖 tty 的指令将无法运行。docker-compose restart [选项] [SERVICE...]
选项:
-t, --timeout TIMEOUT
:指定重启前停止容器的超时(默认为 10 秒)。docker-compose start
可以再次启动这些 容器。docker-compose stop [options] [SERVICE...]
选项:
-t, --timeout TIMEOUT
停止容器时候的超时(默认为 10 秒)。docker-compose stop
命令来停止容器。docker-compose rm [options] [SERVICE...]
选项:
-f, --force
强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。 -v
删除容器所挂载的数据卷。docker-compose up
启动的容器都在前台,控制台将会同时打印所有容器的输出信 息,可以很方便进行调试。
当通过 Ctrl-C
停止命令时,所有容器将会停止。
如果使用 docker-compose up -d
,将会在后台启动并运行所有的容器。一般推荐生产环境下 使用该选项。
默认情况,如果服务容器已经存在, docker-compose up
将会尝试停止容器,然后重新创建 (保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml
文件 的最新内容。
如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recreate 。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。
如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d
来重新创建服务 并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。docker-compose up [options] [SERVICE...]
选项:
-d
在后台运行服务容器。--no-color
不使用颜色来区分不同的服务的控制台输出。 --no-deps
不启动服务所链接的容器。 --force-recreate
强制重新创建容器,不能与 --no-recreate 同时使用。 --no-recreate
如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使 用。 --no-build
不自动构建缺失的服务镜像。 -t, --timeout TIMEOUT
停止容器时候的超时(默认为 10 秒)。docker-compose scale [options] [SERVICE=NUM...]
通过 service=num
的参数来设置数量。选项:
-t, --timeout TIMEOUT
停止容器时候的超时(默认为 10 秒)。docker-compose version
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。