我想将容器共享卷中的数据提交到映像。我似乎无法做到?我有点印象,这也许在Docker中是不可能的,但这似乎与不将数据留在主机上的整个哲学完全矛盾,所以我中的一部分认为必须有一种方法来做到这一点。
在终端1中启动一个具有一定容量的容器。
$ docker run -it -v /data ubuntu:14.10 /bin/bash
root@19fead4f6a68:/# echo "Hello Docker Volumes." > /data/foo.txt
在终端2中启动第二个容器,容器1中的文件在那里,因此docker卷都可以工作。
$ docker run -it --volumes-from 19fead4f6a68 ubuntu:14.10 /bin/bash
root@5c7cdbfc67d8:/# cat /data/foo.txt
Hello Docker Volumes.
我的理解是,我只能将差异提交给图像,因此我要检查两个容器上的差异。由于某些奇怪的原因,我的更改没有显示出来!
$ docker diff 19fead4f6a68
A /data
$ docker diff 5c7cdbfc67d8
A /data
我在卷文件夹之外创建文件
root@19fead4f6a68:/# echo "Docker you are a very strange beast...." > /var/beast.txt
现在我们可以进行一些更改,尽管我很沮丧,因为这不是我需要与其他容器共享的卷中的数据。
$ docker diff 19fead4f6a68
A /data
C /var
A /var/beast.txt
显然,这是设计使然。任何人都对为什么docker不允许我将卷数据保存到提交有任何想法?无论如何,在容器之间共享文件,然后将它们保存到映像中吗?我觉得一定有我想念的东西吗?特别是在共享数据的最后,同时避免了主机依赖性。
卷不在容器映像中。这正是它们的用途-将数据带入图像中未包含的容器中。
从Docker文档中:
数据卷是一个或多个容器中的一个特别指定的目录,该目录绕过联合文件系统为持久性或共享数据提供一些有用的功能:
- 数据量可以在容器之间共享和重用
- 直接更改数据量
- 更新映像时将不包括对数据量的更改
如果要将某些更改保存为图像的一部分,请在图像内部而不是在卷中进行更改。如果要在多个容器之间共享更改,请将该数据放入一个卷中,但必须自己安排快照,回滚等操作,因为Docker没有该功能。
也许您会对Flocker感兴趣。
问题内容: 嗨,我正在使用Docker部署一些服务,在这里我想在不同的Docker容器之间共享Docker卷。 假设我有一个Docker容器A在/ data挂载了一个卷。这是A的Dockerfile 据我了解,这会将一个卷附加到容器,但不会将主机目录装载到该容器。因此,该卷内的数据仍位于容器A内。 我有另一个提供ftp服务的容器B。它访问卷/ public下的数据。B的Dockerfile是 现在
我正在使用Docker部署一些服务,我想在不同的容器之间共享Docker卷。 假设我有一个Docker容器a,它在/data处挂载了一个卷。下面是它的DockerFile: 根据我的理解,这会将卷附加到容器,但不会将主机目录挂载到容器。所以这个卷里面的数据仍然在容器A里面。
我有一个docker容器运行良好。它在目录中生成一些文件。我需要这些文件做些测试。但当此容器停止时,所有内容都将被删除。所以我需要将这个文件从容器复制到主机。 我有一个python应用程序运行在生成文件的容器中。我需要一些命令或任何方式,通过这些命令,我可以在容器停止时将发送到结尾的主机。 为此,我可以使用命令,我尝试了它,但它给我一个错误,因为没有安装docker。 如何将文件从容器共享到主机?
问题内容: 我在一个具有不同进程的应用程序上工作,并被要求包含那些进程以实现更多隔离。 问题在于,进程与单个“管理程序”进程共享内存以便交换数据(它们使用经典的共享缓冲区)。该解决方案是为满足性能要求而实施的,因为它在用户空间中运行,因此在用户空间和内核空间之间没有内容切换。 如果我没看错,则不可能在单个IPC名称空间内运行多个docker容器,但是我不知道单个docker容器是否可能属于不同的I
我有一个运行的Mongo DB容器,名为xyz,来自官方Mongo图像。我用创建了这个容器,在这个容器中,我创建了两个带有样本数据的集合。 现在我想在dockerhub上的新图像中提取这个容器。 我使用了docker commit,创建了一个新图像,并将其推送到docker hub上。如果我在另一个系统上提取图像,并从该图像创建一个新的容器,那么在我的原始容器xyz中就没有类似的数据。 经过研究,