当前位置: 首页 > 面试题库 >

通过docker-compose重新使用容器

朱慈
2023-03-14
问题内容

我有一个在定义的多个Docker容器上运行的应用程序docker-compose。我的用户一切正常,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 upsupervisord(见相关部分supervisord.conf以下),问题是,容器现在命名myapp_app_1myapp_data_1并且myapp_db_1,这是他们创造了从无到有,并在原容器的所有自定义都将丢失。

我尝试重命名容器,但是它给出一个错误消息,指出已经有一个使用该名称的容器。

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

主管

...
[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

问题答案:

只要容器的配置没有改变, Compose 就会一直重用容器。

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

如果您需要初始化某些东西,我会在Dockerfile中完成它,以便将其保留在映像中。



 类似资料:
  • 我有两个容器 - 一个包含 react 应用程序,另一个包含烧瓶应用程序。 我可以使用下面的docker-compose文件和它们各自的Dockerfile构建两者,并且能够通过指定端口上的浏览器访问每个。但是,我的React应用程序对Flask的API调用没有被检索(它们在图片中没有Docker的情况下工作)。 任何建议都非常感谢! Docker-撰写 用于烧瓶应用程序的Dockerfile D

  • 我有一个比postgresql运行更早的服务器,我读到Docker-ComposeV3不再使用HealthChecks来执行。我想知道除了之外,我还有什么其他选项。也就是说,我希望docker-compose重新启动失败后关闭/关闭的容器。我找到了这个线程,它展示了如何用docker-compose重新启动一个容器,如何用docker-compose重新启动一个容器,但这并没有解决我的问题。谢谢!

  • 我正在docker容器中设置一个应用程序。我希望这个应用程序能够与localstack堆栈容器localstack文档连接。当我运行时,容器会成功启动。我可以运行docker-compose文件中未包含的独立java应用程序,它将成功连接到localstack容器。但与localstack一起启动的应用程序无法连接。我看过docker文档和localstack文档,我想不出如何让这些东西彼此通信。

  • 问题内容: 我有一个包含4个容器的文件:redis,postgres,api,worker 在worker的开发过程中,我经常需要重新启动它才能应用更改。有什么好的方法可以在不重新启动其他容器的情况下重新启动容器(例如)? 问题答案: 这很简单:使用命令: 您可以设置杀死容器之前等待停止的时间(以秒为单位) 请注意,这将重新启动容器,但不会重建它。如果要应用更改然后重新启动,请查看其他答案。

  • 问题内容: 我正在尝试为容器提供静态IP地址。我了解我必须创建一个自定义网络。我创建了它,并且桥接接口在主机(Ubuntu 16.x)上已启动。容器从该子网获取IP,但不是我提供的静态IP。 这是我的docker-compose.yml: 容器得到10.5.0.2和10.5.0.3,而不是5和6。 问题答案: 请注意,除非您做的事情允许容器网络从外部路由到内部(例如,macvlan),否则我不建议

  • 我正在尝试向容器提供静态IP地址。我知道我必须创建一个自定义网络。我创建它并且桥接接口在主机(Ubuntu 16. x)上。容器从此子网获取IP,但不是我提供的静态。 这是我的docker-compose.yml: 容器10.5.0.2和10.5.0.3,而不是5和6。