overlay2存储驱动程序中的“native overlay diff”是什么意思?

时间:2017-10-17 10:28:10

标签: docker

我经历过删除了与正在运行的容器相关联的图像的下层(差异)。 (因此删除了容器中的某些文件)

我认为' Native Overlay Diff'来自docker info的选项非常可疑。

我的码头信息如下:

$ docker info
...
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: false
...

你们知道' Native Overlay Diff'

的确切含义

2 个答案:

答案 0 :(得分:2)

这似乎与OVERLAY_FS_REDIRECT_DIR内核选项有关,该选项在Kconfig中描述为:

  

配置OVERLAY_FS_REDIRECT_DIR
  bool" Overlayfs:默认打开重定向目录功能"
  取决于OVERLAY_FS
  帮助

     

如果启用此配置选项,则覆盖文件系统将使用   默认情况下重命名目录时重定向。在这种情况下它是   仍然可以使用。全局关闭重定向   " redirect_dir =关"模块选项或基于文件系统实例   使用" redirect_dir = off"挂载选项。

     

请注意,重定向不向后兼容。也就是说,安装   在内核上重定向的叠加层,它不支持此功能   功能将产生意想不到的结果。

     

如果不确定,请说N。

关于moby问题3434234320的一些讨论表明,如果满足以下所有条件:

  1. OVERLAY_FS_REDIRECT_DIR内核选项已启用
  2. 存储引擎是overlay2(大多数情况下是默认值)
  3. docker将图像存储在未安装redirect_dir=off
  4. 的文件系统上
  5. " native"使用差异驱动程序
  6. 非空目录被重命名为docker build的一部分,例如在如下的Dockerfile中:

    FROM busybox
    
    RUN mkdir /dir1
    RUN touch /dir1/newfile
    RUN mv /dir1 /dir2
    
  7. 然后生成的图像将无法正确记录重命名目录的内容(即,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