问题描述
是否可以在(特权)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 运行容器。