将文件从容器fs复制到同级容器

用户名

假设我在以以下内容开头的容器中运行:

docker run -v /var/run/docker.sock:/var/run/docker.sock foo

然后从上述容器中启动另一个容器:

docker run -v /var/run/docker.sock:/var/run/docker.sock bar

我的问题是-第二个命令中的/var/run/docker.sock是否指向与第一个命令相同的/var/run/docker.sock?

容器应该是兄弟姐妹,所以我的第二个问题是-如何使用-v选项将文件从“外部”容器放入“内部”容器?我正在寻找做:

docker run -v "/foo:/bar" -v /var/run/docker.sock:/var/run/docker.sock bar
ctt

当一个人将Docker套接字安装到容器中时,他/她就使容器可以控制在主机上运行的docker实例

您可以认为这类似于为多个容器提供网站的URL。任何类似的容器确实会影响类似的网站,这些更改对所有人都是可见的。

具体来说,在此设置下,没有容器层次结构:只有多个容器可以控制同一docker守护程序,否则可以通过docker主机上的命令进行控制每个容器都具有通过docker守护程序在主机上执行几乎所有操作的同等能力,默认情况下,容器提供的隔离几乎将被完全颠覆。

因此,泊坞窗中的泊坞窗具有一些固有的安全隐患,但有关这些方面的更多信息可以在互联网上的其他地方找到。

为了回答您的第二个问题,在容器之间复制文件涉及到运行一个命令,该命令发出源容器中文件的内容,并将其通过管道传递给一个写入目标容器中目标文件的命令。例如:

docker exec container1 cat /source/file | docker exec -i container2 bash -c "cat > /dest/file"

复制多个文件可能涉及在源代码中创建一个tarball,在另一个文件中将其扩展:

docker exec container1 tar -C /source -c dir| docker exec -i container2 tar -C /dest -x

为方便起见,并且对于外壳或tar容器中不可用的情况,docker cp可以将其从容器中复制文件到主机。通过将文件从源容器复制到主机,然后再复制到目标容器,您可以得到相同的解决方案,但要花一些临时存储空间。例如:

docker cp container1:/source/file file
docker cp file container2:/dest/file

但是,您正在尝试某些事情。一种替代方法是将主机中的目录装入两个容器中,并通过该目录进行通信。例如:

mkdir shared
docker run -d --name=container1 -v $PWD/shared:/mnt/share image command
docker run -d --name=container2 -v $PWD/shared:/mnt/share image command

尽管有错别字,但上面的示例将导致两个容器可用。这两个容器中的进程可能通过共享文件/mnt/share,并由shared/主机上的目录支持

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章