如何让Docker在内核升级和重启后自动存活?

如何让Docker在内核升级和重启后自动存活?

简短问题: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-.*这里

顺便说一句,这不是一个正常问题。它通常应该正常工作。

相关内容