首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将文件从容器fs复制到同级容器

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

Stack Overflow用户
提问于 2019-05-10 21:04:18
回答 1查看 367关注 0票数 3

假设我是在一个容器中运行的,这个容器的开头是:

代码语言:javascript
运行
复制
docker run -v /var/run/docker.sock:/var/run/docker.sock foo

然后,我从上面的一个容器中启动另一个容器:

代码语言:javascript
运行
复制
docker run -v /var/run/docker.sock:/var/run/docker.sock bar

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

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

代码语言:javascript
运行
复制
docker run -v "/foo:/bar" -v /var/run/docker.sock:/var/run/docker.sock bar
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 21:28:35

当一个人将一个对接者套接字挂载到一个容器中时,s/他就给了容器对在主机上运行的对接者实例的控制权。

您可以认为这类似于为多个容器提供一个网站的URL。无论一个类似的容器会影响到类似的网站,这些变化都会被所有人看到。

具体而言,在此设置下,不存在容器的层次结构:只有多个容器控制相同的停靠守护进程,否则可以通过主机上的docker命令进行控制。每个容器都有相同的能力,几乎可以通过docker守护进程在主机上完成任何事情,默认情况下容器提供的隔离将几乎完全被颠覆。

由于这个原因,码头码头有一些固有的安全含义,但更多关于这些可以在互联网的其他地方找到。

要回答第二个问题,在容器之间复制文件需要运行一个命令,该命令会在源容器中发出文件的内容,并将其传递到写入目标容器中的目标文件的命令。例如:

代码语言:javascript
运行
复制
docker exec container1 cat /source/file | docker exec -i container2 bash -c "cat > /dest/file"

复制多个文件可能涉及在源中创建tarball并在另一个文件中展开它:

代码语言:javascript
运行
复制
docker exec container1 tar -C /source -c dir| docker exec -i container2 tar -C /dest -x

为了方便起见,在容器中没有shell或tar的情况下,可以使用docker cp将文件从容器复制到主机。通过将文件从源容器复制到主机,然后复制到目标容器,您可以达到相同的解决方案,而代价是一些临时存储。例如:

代码语言:javascript
运行
复制
docker cp container1:/source/file file
docker cp file container2:/dest/file

不过,你发现了什么东西。另一种方法是将一个目录从主机装入两个容器并通过该目录进行通信。例如:

代码语言:javascript
运行
复制
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/目录进行备份。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56084822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档