我知道您可以使用VOLUMES指令共享主机上存在的目录,但是我想反过来 - 与主机共享容器中存在的文件,前提是不存在任何内容在主机上的那个目录中。
这个用例就是我们有承包商,我们希望为他们提供一个docker容器,其中包含他们需要使用的所有代码和基础结构,但是这将允许他们通过运行来改变代码PyCharm或其他程序在他们的本地机器上,而不必担心提交容器,等等。
答案 0 :(得分:2)
为了能够保存(持久化)数据,Docker提出了卷的概念。基本上Volumes
是默认的Union File System之外的目录(或文件),并且作为主机文件系统上的普通目录和文件存在。
您可以使用-v标志在运行时声明卷:
$ docker run -it --name container1 -v /data debian /bin/bash
这将使容器内的目录/data
在联合文件系统之外,并可在主机上直接访问。将/data
目录中保存的图像的任何文件复制到卷中。我们可以通过在主机上使用docker inspect命令找出卷在主机上的位置。
打开一个新终端,让上一个容器继续运行并运行:
$ docker inspect container1
输出将提供有关容器配置(包括卷)的详细信息。 输出应类似于以下内容:
...
Mounts": [
{
"Name": "fac362...80535",
"Source": "//var/lib/docker/vfs/dir/cde167197ccc3e/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
...
告诉我们Docker已将/data
挂载到容器中,作为主机中/var/lib/docker
下的某个目录。
答案 1 :(得分:0)
在Dockerfile中,您可以轻松ADD
or COPY
整个目录。
我想这就是你要找的东西。否则,您只需共享代码即可docker run
,以便他们可以批量安装共享代码。