如何在 Debian 上启用 AUFS?

How to enable AUFS on Debian?

当我尝试通过以下方式安装 docker 时:

curl -sSL https://get.docker.com/ | sh

我收到消息:

Warning: current kernel is not supported by the linux-image-extra-virtual package. We have no AUFS support. Consider installing the packages linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.

但是,Debian Jessie 上似乎不存在这两个软件包:

# apt-get install linux-image-virtual linux-image-extra-virtual
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-image-virtual
E: Unable to locate package linux-image-extra-virtual

我在这里错过了什么?

你可以试试

sudo apt-get install linux-image-extra-$(uname -r)

安装应该包含 AUFS 支持的增强内核版本。

现代内核不支持aufs,所以你应该从aufs跳到overlayfs。只需使用以下选项重新启动 docker 守护程序:

--storage-driver=overlay2

(或将此选项添加到 /etc/default/docker)

在某些系统中,您应该通过创建 /etc/systemd/system/docker.service 添加文件 /etc/default/docker 的处理以启动程序,内容为:

[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \
      $DOCKER_STORAGE_OPTIONS \
      $DOCKER_NETWORK_OPTIONS \
      $BLOCK_REGISTRY \
      $INSECURE_REGISTRY \
      $DOCKER_OPTS

更多信息here

执行

systemctl daemon-reload

更改生效。

注意! 您的所有图片都无法访问。如果您想保留它们,只需保存并重新加载它们。你可以找到很好的描述here

更新。我已将 overlay 更改为 overlay2,因为它解决的问题比描述的 here

多一点

UDP。不相关,因为 overlay2 在 docker (18-06) 的现代版本中默认使用。

实际上安装一个标准的 jessie 会给你一个带有 aufs 支持的内核。我的猜测是您通过 jessie-backports 升级到更高的内核版本,这不是标准的 jessie 设置。

这是使用当前的 Debian jessie 8.7.1 amd64 和内核 3.16.0.4 测试的。

# cat /etc/debian_version
8.7
# dpkg --get-selections | grep linux-image
linux-image-3.16.0-4-amd64          install
linux-image-amd64                   install

# dpkg -L linux-image-3.16.0-4-amd64 | grep aufs
/lib/modules/3.16.0-4-amd64/kernel/fs/aufs
/lib/modules/3.16.0-4-amd64/kernel/fs/aufs/aufs.ko

所以回答你的问题:

您可以 re-install Debian Jessie 或 down-grade 默认内核,并且您有一个支持 aufs 的 jessie。

要在 Debian 9 aka Debian stretch 上安装 aufs,只需发布​​ apt-get install aufs-dkms。遗憾的是,目前 jessie-backports 不可用。

在我们公司,我们正在使用 jessie aufs 设置驱动我们的 docker 主机,一切都 运行 完美。

更新 08-2018

即使是现在我也不能推荐 overlay2 用于生产。我们目前遇到容器问题,其中 mysql 在具有 overlay2 存储的容器中 运行 时无法创建 /var/run/mysqld.sock。

截至 2018 年 8 月,此 one year old issue 已解决此问题。