docker 容器内的overlayfs

问题描述

是否可以在(特权)docker 容器内安装覆盖 fs?至少我的直觉方法在容器外运行良好,但失败了:

std::set<std::string> keywords {"these","are","my","keywords"};

for (bool first{true}; auto const& kw : keywords)
    std::cout << (first ? first = false,"" : ",") << kw;

附加信息:

  • Docker 版本 18.09.1,内部版本 4c52b90
  • 内核 4.19.0-8-amd64
  • Debian 10(主机和 docker-image

解决方法

发现有用的东西!将 workdir 和 upperdir 安装为 tmpfs 对我来说很有效。 像这样:

> mkdir /tmp/overlay
> mkdir /tmp/{low,merged}
> mount -t tmpfs tmpfs /tmp/overlay
> mkdir /tmp/overlay/{up,work}
> mount -t overlay overlay -o lowerdir=/tmp/low/,upperdir=/tmp/overlay/up/,workdir=/tmp/overlay/work/ /tmp/merged/ 

我仍然对为什么在 docker 容器中创建没有 tmpfs 的覆盖失败的解释感兴趣?

,

如何在 docker 容器内挂载overlayfs:

https://gist.github.com/detunized/7c8fc4c37b49c5475e68ef9574587eee

基本上,您需要使用 --privileged 或更安全的 --cap-add=SYS_ADMIN 运行容器。