gpt4 book ai didi

docker - 在 Docker 中,如何在容器之间共享文件,然后将它们保存到图像中?

转载 作者:IT老高 更新时间:2023-10-28 21:22:50 25 4
gpt4 key购买 nike

我想将容器共享卷中的数据提交到镜像。我好像做不到?我有一种印象,这在 Docker 中可能是不可能的,但这似乎与不将数据留在主机上的整个理念完全不一致,所以我的一部分认为必须有办法做到这一点。

1。 1 号航站楼

在 Terminal 1 中启动一个带有卷的容器。

$ docker run -it -v /data ubuntu:14.10 /bin/bash
root@19fead4f6a68:/# echo "Hello Docker Volumes." > /data/foo.txt

2。 2 号航站楼

在终端 2 中启动第二个容器,容器 1 中的文件在那里,所以 docker 卷都在工作。

$ docker run -it --volumes-from 19fead4f6a68 ubuntu:14.10 /bin/bash

root@5c7cdbfc67d8:/# cat /data/foo.txt
Hello Docker Volumes.

3。 3 号航站楼

我的理解是我只能将差异提交到图像,所以我检查了两个容器上的差异。出于某种奇怪的原因,我的更改没有显示出来!??

$ docker diff 19fead4f6a68
A /data

$ docker diff 5c7cdbfc67d8
A /data

4。回到 1 号航站楼

我在卷文件夹之外创建一个文件

 root@19fead4f6a68:/# echo "Docker you are a very strange beast...." > /var/beast.txt

5。回到 3 号航站楼

我们现在可以提交一些更改,尽管我很沮丧,因为这不是我需要与其他容器共享的卷中的数据。

$ docker diff 19fead4f6a68
A /data
C /var
A /var/beast.txt

显然这是设计使然。任何人都对为什么 docker 不允许我将卷数据保存到提交有任何想法?无论如何都可以在容器之间共享文件然后将它们保存到图像中?我觉得一定有什么我错过了?尤其是在避免主机依赖的同时共享数据的目的。

最佳答案

卷在容器镜像之外。这正是它们的用途 - 将数据带入不在图像中的容器中。

来自 Docker docs :

A data volume is a specially-designated directory within one or more containers that bypasses the Union File System to provide several useful features for persistent or shared data:

  • Data volumes can be shared and reused between containers
  • Changes to a data volume are made directly
  • Changes to a data volume will not be included when you update an image

如果要将某些更改保存为图像的一部分,请在图像内部而不是卷中进行更改。如果您想在多个容器之间共享更改,请将这些数据放在一个卷中,但您必须自己安排快照、回滚等,因为 Docker 没有该功能。

也许您会对 Flocker 感兴趣.

关于docker - 在 Docker 中,如何在容器之间共享文件,然后将它们保存到图像中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27421322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com