docker-compose-重新启动策略-不保留映像更改

时间:2018-11-28 16:08:09

标签: docker docker-compose

让我们考虑以下示例:

version: '3'
services:
  some_service:
    build: .
    restart: unless-stopped

docker-compose正常工作,但是在重新启动期间,它保留了先前运行(重新启动之前)引入的(在文件系统中)更改。
如何配置重新启动策略以强制丢失文件系统中的更改?是否可以更改正在运行的容器的重启策略?

2 个答案:

答案 0 :(得分:1)

Type 'MyAdsManager' does not conform to protocol 'NSObjectProtocol'部署具有由docker引擎管理的配置的容器。该重新启动策略将应用于由引擎处理的容器。引擎重新启动容器时,将保持先前的容器状态。唯一的例外是容器内的tmpfs文件系统挂载将重置为空目录。

但是,如果您的服务是通过群模式而不是docker-compose管理的,则默认更改将重新创建任何失败的容器,而不仅仅是重新启动它们。您可以使用以下方法配置单节点群集集群:

NSObjectProtocol

然后您可以通过以下方式部署服务:

docker-compose

请注意,在群体模式下,您无需定义重新启动策略。群集模式将纠正与目标状态的任何差异,无论是容器退出,运行状况检查失败还是被删除,响应将是部署新容器。

答案 1 :(得分:0)

docker-compose up上创建“容器”时,它们具有自己的文件系统。而且,当您重新启动容器时,它仍然是具有相同文件系统的相同容器。因此,您所期待的一切。

如果要重新启动,则需要执行docker-compose down删除容器,然后执行up创建新容器。

您不能在正在运行的容器上更改重启策略。

编辑

@BMitch您可以使用docker update更改重启策略

docker update --restart=on-failure container_id