docker compose 创建容器而不启动它们

docker compose 创建容器而不启动它们

我的 docker 容器是使用 docker-compose 构建的,并且我使用以下衍生工具在我的 CentOS 7 系统上自动启动它们容器文档示例::

[Unit]
Description=condb container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a condb
ExecStop=/usr/bin/docker stop -t 2 condb

[Install]
WantedBy=local.target

一切都工作正常,除了每次我想更改容器时,我都会停止服务,运行docker-compose up以创建容器,然后启动服务,我忘记up已经启动了容器。

我可以围绕这个调整我的脚本以在运行后停止容器docker-compose,但是启动/关闭需要时间,我想知道是否有一种方法可以只创建容器而不启动它(命令build只是构建,up根据构建创建启动它的帮助)?

答案1

docker compose 的源已经有一个create命令,但它还没有出现在 1.5.2 中,也没有在网站上记录。您当然可以尝试从 github 源安装并获取最新(未发布)的功能。

或者,您可以尝试更改systemd文件以不使用 启动各个容器docker,而是在 YAML 文件上运行 docker-compose:

[Service]
Restart=always
ExecStart=/opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml up --no-recreate
ExecStop=/opt/util/docker-compose/bin/docker-compose -f /opt/docker/mongo/docker-compose.yml stop

然后您可以停止使用systemctl stop ...,更改docker-compose.yml文件,然后开始使用systemctl start ...。但我不确定如果组合设置中的容器之一出现故障,是否可以正确重新启动。

相关内容