假设我是在一个容器中运行的,这个容器的开头是:
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发布于 2019-05-10 21:28:35
当一个人将一个对接者套接字挂载到一个容器中时,s/他就给了容器对在主机上运行的对接者实例的控制权。
您可以认为这类似于为多个容器提供一个网站的URL。无论一个类似的容器会影响到类似的网站,这些变化都会被所有人看到。
具体而言,在此设置下,不存在容器的层次结构:只有多个容器控制相同的停靠守护进程,否则可以通过主机上的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为了方便起见,在容器中没有shell或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/目录进行备份。
https://stackoverflow.com/questions/56084822
复制相似问题