我经历过删除了与正在运行的容器相关联的图像的下层(差异)。 (因此删除了容器中的某些文件)
我认为' Native Overlay Diff'来自docker info的选项非常可疑。
我的码头信息如下:
$ docker info
...
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: false
...
你们知道' Native Overlay Diff'
的确切含义答案 0 :(得分:2)
这似乎与OVERLAY_FS_REDIRECT_DIR
内核选项有关,该选项在Kconfig中描述为:
配置OVERLAY_FS_REDIRECT_DIR
bool" Overlayfs:默认打开重定向目录功能"
取决于OVERLAY_FS
帮助如果启用此配置选项,则覆盖文件系统将使用 默认情况下重命名目录时重定向。在这种情况下它是 仍然可以使用。全局关闭重定向 " redirect_dir =关"模块选项或基于文件系统实例 使用" redirect_dir = off"挂载选项。
请注意,重定向不向后兼容。也就是说,安装 在内核上重定向的叠加层,它不支持此功能 功能将产生意想不到的结果。
如果不确定,请说N。
关于moby问题34342和34320的一些讨论表明,如果满足以下所有条件:
OVERLAY_FS_REDIRECT_DIR
内核选项已启用redirect_dir=off
非空目录被重命名为docker build的一部分,例如在如下的Dockerfile中:
FROM busybox
RUN mkdir /dir1
RUN touch /dir1/newfile
RUN mv /dir1 /dir2
然后生成的图像将无法正确记录重命名目录的内容(即,dir2将不包含newfile),因为目录重命名是使用扩展文件属性(xattr)实现的重定向,而docker无法理解存档过程。要解决这个问题,当满足上面的前三个条件时,docker将使用" naive"差异驱动程序产生正确的图像,但比本地"差异驱动。
忽略警告似乎是安全的,但如果您注意到构建缓慢,那么您可以尝试使用选项/var/lib/docker
重新安装服务redirect_dir=off
的音量。
答案 1 :(得分:1)
一种好的解决方案是通过以下命令进入容器:
docker exec -it [CONTAINER_ID] /bin/bash
并搜索所有大文件(例如日志文件)并将其删除。
要列出所有容器,可以使用以下命令:
docker container ls
要搜索大文件,您只需使用以下命令即可:
du -h --max-depth=1