3

我创建了一个新的泊坞窗图像。它创建一个新文件夹/hello。当我将此映像作为容器运行时,我可以通过docker exec -it.. bash 命令访问该容器,并且在执行时会ls看到该/hello文件夹​​。

/hello文件夹也保存在 Docker 卷容器中。所以我已经将容器与现有的 Docker 卷链接起来。所以是执着的。

现在是我的问题:是否可以在 Dockerfile 中执行以下操作?

一个新镜像想要使用与前一个容器相同的卷,并将/hello文件复制到它自己的容器中。

这可以在 docker 文件中执行吗?

4

1 回答 1

2

不,这在您的Dockerfile.

--volumes-from当您使用docker run.

例子:

Dockerfile

FROM ubuntu:14.04

VOLUME /hello

然后:

$ docker build -t test-image-with-volume .
$ docker run -ti --name test-image-with-volume test-image-with-volume bash
/# cd /hello
/# ls -la
total 8

drwxr-xr-x  2 root root 4096 Jan 18 14:59 ./
drwxr-xr-x 22 root root 4096 Jan 18 14:59 ../

然后在另一个终端(虽然上面的容器仍在运行):

Dockerfile

FROM ubuntu:14.04

然后:

$ docker build -t test-image-without-volume .
$ docker run -ti test-image-without-volume bash
/# cd /hello
bash: cd: /hello: No such file or directory
/# exit
$ docker run -ti --volumes-from test-image-with-volume test-image-without-volume bash
/# cd /hello
total 8

drwxr-xr-x  2 root root 4096 Jan 18 14:59 ./
drwxr-xr-x 22 root root 4096 Jan 18 14:59 ../
/# touch test

然后在你原来的终端:

/# ls -la /hello
total 8

drwxr-xr-x  2 root root 4096 Jan 18 15:04 .
drwxr-xr-x 22 root root 4096 Jan 18 15:03 ..
-rw-r--r--  1 root root    0 Jan 18 15:04 test

在您的新终端中:

/# ls -la /hello
total 8

drwxr-xr-x  2 root root 4096 Jan 18 15:04 .
drwxr-xr-x 22 root root 4096 Jan 18 15:03 ..
-rw-r--r--  1 root root    0 Jan 18 15:04 test

您只能在包含卷的容器仍在运行时将卷从一个容器链接到另一个容器。

于 2016-01-18T15:03:16.043 回答