Dan*_*l F 5 upgrade restart apt-get docker
我在使用 Ubuntu 14.04 时遇到了问题
每当我进行 apt-get 升级时,如果 docker-engine 符合升级条件,它会在升级后重新启动服务。这会导致容器重新启动。
其中一个容器在启动过程中需要手动干预,其他容器正在收集时间关键的数据,因此仅需要在非常特定的时间重新启动容器。
如何从这些自动重启中排除 docker-engine 服务?
AFAIK,例如 mongodb,在 apt-get 升级后不会重新启动 mongod,为什么 docker 不能以同样的方式运行?
我不完全确定 mongodb 做了什么,但我很确定它会在更新时重新启动。
docker-engine 的问题不是它不会自行重启,而是它确实会自行重启,您可以在更新后运行以下命令来验证这一点:
sudo service docker status
Run Code Online (Sandbox Code Playgroud)
只是它不会重新启动正在运行的容器。我不完全知道为什么它必须是这样的,因为理论上它可以在服务重新启动时恢复正在运行的容器,但无论出于何种原因,它都不会这样做。
有两种方法可以解决此问题。
第一种简单的方法是排除 docker-engine 的更新,并在看到可用时手动进行更新。
sudo apt-mark hold docker-engine
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
如果有更新以及更新是否被保留,您应该会看到一条通知
...
The following packages were kept back:
docker-engine
...
Run Code Online (Sandbox Code Playgroud)
如果您的容器无法在升级时重新启动,则应该采用此方法。
但是,如果您有能力重新启动它们,则可以使用第二种方法。您可以在启动容器时设置重新启动策略,如下所示:
sudo docker run --restart=always -d image-name
Run Code Online (Sandbox Code Playgroud)
这样,当 docker-engine 重新启动时,容器也会随之启动。这意味着更新时,以这种方式启动的容器会自动启动。
| 归档时间: |
|
| 查看次数: |
4602 次 |
| 最近记录: |