用`docker-compose`重用容器

时间:2016-04-20 22:13:24

标签: docker docker-compose supervisord

我在docker-compose定义的多个Docker容器上运行了一个应用。我的用户一切正常,docker-compose ps输出如下:

       Name                Command           State     Ports
------------------------------------------------------------
myuser_app_1    /config/bootstrap.sh   Exit 137
myuser_data_1   sh                     Exit 0
myuser_db_1     /run.sh                Exit 143

现在我尝试使用docker-compose up运行supervisord(请参阅下面supervisord.conf的相关部分),问题是容器现在名为myapp_app_1myapp_data_1myapp_db_1,即他们是从头开始创建的,以前的容器上的所有自定义都会丢失。

我尝试重命名容器,但它提示错误,说已经有一个具有该名称的容器。

问:是否有某种方法可以强制docker-compose重复使用现有容器,而不是根据各自的图片创建新容器?

  

supervisord.conf

...
[program:myapp]
command=/usr/local/bin/docker-compose
    -f /usr/local/app/docker-compose.yml up
redirect_stderr=true
stdout_logfile=/var/log/myapp_container.log
stopasgroup=true
user=myuser

2 个答案:

答案 0 :(得分:2)

撰写will always reuse containers as long as their config hasn't changed

如果容器中有任何状态,则需要将该状态放入卷中。容器应该是短暂的,你应该能够销毁它们并在任何时候重新创建它们而不会丢失任何东西。

如果你需要初始化某些内容我会在Dockerfile中执行它,以便它保留在图像中。

答案 1 :(得分:0)

仅供参考:-g标志自v17.05.0起已弃用,并由--data-root标志取代...