![如何让Docker在内核升级和重启后自动存活?](https://linux22.com/image/684898/%E5%A6%82%E4%BD%95%E8%AE%A9Docker%E5%9C%A8%E5%86%85%E6%A0%B8%E5%8D%87%E7%BA%A7%E5%92%8C%E9%87%8D%E5%90%AF%E5%90%8E%E8%87%AA%E5%8A%A8%E5%AD%98%E6%B4%BB%EF%BC%9F.png)
简短问题:Docker、Ubuntu 16.04、自动安全升级和重启。那么我如何确保最新版本Linux 镜像额外-`uname -r`在自动安全升级和重启后 Docker 尝试启动容器之前是否已经安装?
详细问题:(以下所有内容)
我正在使用 Docker 和 Docker-Compose 部署我的 Web 应用。我已将 Docker 容器配置为在重启时自动启动。并且,我已配置自动安全升级,包括自动重启。
这意味着,每隔一段时间,就会自动安装新内核,服务器也会重新启动。此后,Docker 将无法启动,因为:
先前的存储驱动程序“aufs”失败:驱动程序不受支持
(说service docker start
)。为了解决这个问题,需要:
sudo apt-get install linux-image-extra-`uname -r`
因此我将其添加到 crontab 中:
root@edgoew1dal16gandi:~# crontab -l
...
@reboot apt-get install linux-image-extra-`uname -r` 2>&1 >> /tmp/cron-edm.log
但这失败了,因为:(我在 /tmp/cron-edm.log 文件中看到)
Err:1 http://security.ubuntu.com/ubuntu xenial-security/main
amd64 linux-image-extra-4.4.0-24-generic amd64 4.4.0-24.43
Temporary failure resolving 'europe-west1.gce.archive.ubuntu.com'
但是如果我运行命令手动重启后,它就可以正常工作了。显然,apt-get
失败是因为它在重启后运行得太早了?
因此我想知道,我怎样才能做到这一点:
apt-get install linux-image-extra-`uname -r`
每次服务器重启后自动前Docker 启动,不会因为上述原因而失败“暂时故障……”错误?
答案1
您必须为当前内核安装虚拟包。linux-image-extra-.*
然后应该是一个依赖项。
因此,当您安装了通用内核后,应该已经安装了该软件包。如您所见,linux-image-generic
它取决于当前版本linux-image-extra-.*
这里。
顺便说一句,这不是一个正常问题。它通常应该正常工作。