我有一台安装了 Docker 的 Ubuntu 机器。(Ubuntu 版本是 20.04,但这也会影响 18.04,也可能影响非 LTS 版本。)软件包docker.io从focal-security失败:
Preparing to unpack .../docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb ...\nThe aufs storage-driver is no longer supported.\nPlease ensure that none of your containers are\nusing the aufs storage driver, remove the directory\n/var/lib/docker/aufs and try again.\ndpkg: error processing archive /var/cache/apt/archives/docker.io_20.10.7-0ubuntu1~20.04.1_amd64.deb (--unpack):\n new docker.io package pre-installation script subprocess returned error exit status 1\ndpkg: error while cleaning up:\n installed docker.io package post-installation script subprocess returned error exit status 1\nRun Code Online (Sandbox Code Playgroud)\n这是一个已知的错误,但根据Ubuntu Docker 打包策略,该错误已被标记为 \xe2\x80\x9cwon\'t fix\xe2\x80\x9d 。
\n\n\n这里引用了很多人的话:
\n\n\n这是一个重大更新,不应在 LTS 版本上发生。
\n\n\n像这样需要大量手动干预的升级在 LTS 版本中绝对不应该发生。
\n在一般情况下,你对此的看法是正确的。不幸的是 Docker 是一个例外。(\xe2\x80\xa6)
\n因此,作为 Docker 的例外,我们更新到较新的上游版本,而不考虑 Docker 本身行为的向后兼容性,而是完全依赖上游的决策。在这种情况下,并且仅基于其他人已经在此处提供的分析,这意味着我们不希望将 aufs 存储驱动程序修补回我们自己的包装中。(\xe2\x80\xa6)
\n按照目前的政策,这不是我们期望修复的问题,因此我将此错误标记为“无法修复”。
\n
我发现推理令人困惑 \xe2\x80\x94\xc2\xa0 如果我使用稳定的发行版,我希望升级是无缝的,并且我不希望拥有最新版本的程序。如果我想要滚动版本,我知道在哪里可以找到它,而且它不会被称为 LTS。但这不是讨论的场所。
\n我的问题是,接下来我该怎么办?我如何 \xe2\x80\x9censure [我的] 容器都没有使用 aufs 存储驱动程序\xe2\x80\x9d?保留旧的、未维护的 Docker 版本是行不通的。我需要安全更新。
\n我的容器都不使用依赖于存储驱动程序的高级功能。我对升级或迁移我的容器非常满意。我怎么做?
\nArt*_*ild 21
来自官方 Docker 文档- 如何配置存储驱动程序以使用OverlayFS而不是AUFS.
停止 Docker。
sudo systemctl stop docker
Run Code Online (Sandbox Code Playgroud)
将 的内容复制/var/lib/docker到临时位置。
cp -au /var/lib/docker /var/lib/docker.bk
Run Code Online (Sandbox Code Playgroud)
编辑/etc/docker/daemon.json。如果它尚不存在,请创建它。假设该文件为空,添加以下内容。
{
"storage-driver": "overlay2"
}
Run Code Online (Sandbox Code Playgroud)
如果 daemon.json 文件包含格式错误的 JSON,则 Docker 不会启动。
启动 Docker。
sudo systemctl start docker
Run Code Online (Sandbox Code Playgroud)
验证守护程序是否正在使用overlay2 存储驱动程序。使用 docker info 命令并查找存储驱动程序和支持文件系统。
$ docker info
Containers: 0
Images: 0
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
<...>
Run Code Online (Sandbox Code Playgroud)
Docker 现在正在使用overlay2存储驱动程序。
然后,您需要重新创建容器并使用新的存储驱动程序再次获取所有图像。使用“绑定挂载”映射的容器数据应该保持不变(这是指向 Docker 文件系统外部的数据的挂载,而不是卷 -请参阅此处了解更多信息)。
之后,您可以删除该目录/var/lib/docker/aufs并继续升级 Docker 包。
| 归档时间: |
|
| 查看次数: |
14435 次 |
| 最近记录: |