Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当一个容器旋转另一个容器时,docker在容器之间共享数据_Docker_Docker Compose - Fatal编程技术网

当一个容器旋转另一个容器时,docker在容器之间共享数据

当一个容器旋转另一个容器时,docker在容器之间共享数据,docker,docker-compose,Docker,Docker Compose,我有一个名为spinner的专用容器,它将数据写入该卷。狙击手可以旋转容器 当snipper启动容器并尝试装载与spinnee容器相同的数据卷时,该卷将被视为无文件 下面是一个例子来说明这一点 $docker run--rm-it--name spinner-v data:/data-v/var/run/docker.sock:/var/run/docker.sock/bin/sh /#apk更新-qq&&apk添加docker-qq /#cat/data/foo 福 /#主机名 27a807a

我有一个名为spinner的专用容器,它将数据写入该卷。狙击手可以旋转容器

当snipper启动容器并尝试装载与spinnee容器相同的数据卷时,该卷将被视为无文件

下面是一个例子来说明这一点

$docker run--rm-it--name spinner-v data:/data-v/var/run/docker.sock:/var/run/docker.sock/bin/sh
/#apk更新-qq&&apk添加docker-qq
/#cat/data/foo
福
/#主机名
27a807a0bd01
/#docker run--rm-it--name spinnee-v/data:/data alpine/bin/sh
/#759d96c4ba39
/#ls-l/数据
总数0
使用相同的数据卷可以绕过此问题,这意味着spinner可以通过指定相同的数据卷来旋转spinnee。比如

/#docker run--rm-it--name spinnee-v data:/data alpine/bin/sh
/#主机名
38dec687817c
/#cat/data/foo
福
另一种绕过它的方法是使用和管理它。正确地

问题是,spinner通过利用docker compose来旋转容器,也使用docker compose来扩展容器,这样每个容器都将有一个自动生成名称的数据卷

我如何使微调器(不知道它在容器中运行)在自身和它所旋转的容器(即spinee)之间提供透明的卷共享?

您可以尝试使用。它并不能满足您的所有要求(微调器仍然需要知道正在容器中运行),但至少您不需要按名称指定卷

$docker run--rm-it--name spinner-v data:/data-v/var/run/docker.sock:/var/run/docker.sock/bin/sh
/#apk更新-qq&&apk添加docker cli-qq
/#echo“它有效!”>/data/test.txt
/#docker run--rm--name spinnee--来自“$(主机名)”alpine/bin/sh-c“cat/data/test.txt”的卷
它起作用了!
您可以尝试使用。它并不能满足您的所有要求(微调器仍然需要知道正在容器中运行),但至少您不需要按名称指定卷

$docker run--rm-it--name spinner-v data:/data-v/var/run/docker.sock:/var/run/docker.sock/bin/sh
/#apk更新-qq&&apk添加docker cli-qq
/#echo“它有效!”>/data/test.txt
/#docker run--rm--name spinnee--来自“$(主机名)”alpine/bin/sh-c“cat/data/test.txt”的卷
它起作用了!

第二个
docker run
命令装载主机路径
/data
,而不是命名卷
data
。不能将目录从一个容器装载到另一个容器。一般来说,如果你能围绕它进行设计,最好不要动态启动容器,也不要与容器共享文件。@DavidMaze:我知道你所说的一切,甚至注意到如何绕过它。由于使用docker compose跨接两个容器,因此很难知道将使用的docker卷。您的第二个
docker run
命令装载主机路径
/data
,而不是命名卷
data
。不能将目录从一个容器装载到另一个容器。一般来说,如果你能围绕它进行设计,最好不要动态启动容器,也不要与容器共享文件。@DavidMaze:我知道你所说的一切,甚至注意到如何绕过它。由于这两个容器都是使用docker compose跨接的,因此了解这两个容器都将使用的docker卷非常困难。这比指定数据卷名称更优雅。但是,当您考虑到每个卷都是由docker compose编排的时,中的
卷没有这种本机支持。也许我应该考虑使用,在D- C V3 VuluSeSo中不再支持(它存在于V2中),这比指定数据卷名称更优雅。但是,当您考虑到每个卷都是由docker compose编排的时,
中的
卷没有这种本机支持。也许我应该考虑使用,实际上,在D C V3 VuluSeSa中不再支持(它存在于V2中)