我可以将docker主机目录挂载为写入/覆盖上的副本吗?
我想在Docker中挂载一个主机目录,而在外面实际上是只读的。 但我希望它出现在容器内读/写。
这样我可以写入文件/目录,但不能在外面改变。 这可能使用某种叠加过程吗?
这就是我所做的:
在主机上:
加载目录为只读。
docker run --privileged -v /path/on/host:/path/on/client-read-only:ro -it ubuntu /bin/bash
在客户端:
在客户端上使用OverlayFS通过从主机挂载的只读目录。
mount -t overlayfs none -o lowerdir=/path/on/client-read-only,upperdir=/path/on/client /path/on/client
然后使用/path/on/client
读取/写入文件。
编辑 :如果你的主机上有一个3.18+内核,你可能更喜欢在客户端上使用它:
mount -t overlay overlay -o lowerdir=/path/on/client-read-only,upperdir=/path/on/client,workdir=/path/on/client-workdir /path/on/client
哪个不是overlayfs
。 用overlayfs
我有一个关于无法使用rm
。 overlay
为我解决了这个问题。
我会build议看看你的文件系统是否支持overlayfs; 并可以通过validation
$> cat /proc/filesystems | grep overlayfs $> overlayfs overlay
如果是这样,那么我build议你在主机上创buildoverlayfs,并将合并目录挂载到Docker容器,这样你就可以pipe理主机上的东西,而不是主机上的一些东西,还有一些在Docker容器上。
我遵循以下步骤来实现这一点:让我举个例子; 我有源代码,我想build立多个平台,如i386,x86_64和amd64 ; 所有平台的源代码将保持不变; 作为每个平台的可执行文件(.obj和exe)将有所不同; 所以我们需要在每个特定的平台目录下执行
sudo mount -t overlay overlay -o lowerdir=/home/viswesn/source-code,upperdir=/home/viswesn/i386_executable,workdir=/i386 /home/viswesn/i386_merged sudo mount -t overlay overlay -o lowerdir=/home/viswesn/source-code,upperdir=/home/viswesn/x86_64_executable,workdir=/x86_64 /home/viswesn/x86_64_merged
它说,任何由源文件创build的目标文件或可执行文件将保留在/ home / viswesn / X_executable目录中,源代码将保留在/ home / viswesn / source-code中; as / home / viswesn / X_merged /将包含特定平台的源代码和可执行文件;
现在,我们应该将X_merged目录作为卷挂载到Docker容器中,以构build每个平台的源代码
对于i386:
sudo docker run --privileged -v /home/viswesn/i386_merged/:/source-code -it ubuntu-trusty:14:01 /bin/bash
对于amd64:
sudo docker run --privileged -v /home/viswesn/amd64_merged/:/source-code -it ubuntu-amd64:14:01 /bin/bash
有了这个,同一个源代码就可以同时为所有平台同时构build,而不需要源代码的多个副本。
- 有什么方法可以确保您在stream模式下从docker-py日志逐行读取吗?
- docker-compose.yml使用10up / phpfpm和httd:latest不能运行php文件
- 在远程主机上的Docker flask uwsgi 404
- 如何将主机ip分配给与docker组合运行的服务
- 在docker-compose应用程序和其他容器之间在docker swarm上创build一个networking
- 想要ssh进入一个正在运行的Docker容器在CentOs Image中运行
- 将容器端口绑定到Dockerfile中的主机
- 让docker工作在守护进程模式下的tahoe-lafs存储节点?
- 在docker容器中运行django