如何在 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 已解决此问题。
当我尝试通过以下方式安装 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 已解决此问题。