Docker运行-v将文件挂载为目录

时间:2017-10-12 23:23:57

标签: docker gitlab gitlab-ci docker-in-docker

我试图将包含文件的目录安装到带有-v标志的容器上,但不是将该文件作为文件挂载,而是将其作为目录挂载:

运行脚本:

$ mkdir creds/
$ cp key.json creds/key.json
$ ls -l creds/
total 4
-rw-r--r-- 1 root root 2340 Oct 12 22:59 key.json
$ docker run -v /*pathToWorkingDirectory*/creds:/creds *myContainer* *myScript*

当我查看docker run命令的调试spew时,我看到它创建了/creds/目录,但由于某种原因,创建了key.json作为其下的子目录,而不是复制文件。

我已经看到其他一些帖子说如果你告诉docker run挂载一个无法找到的文件,它会在容器上创建一个带有文件名的目录,但是因为我没有& #39; t指定文件名,并知道命名新目录' key.json'它似乎能够找到该文件,但无论如何都将其创建为目录?有没有人遇到过这个?

如果相关,则该脚本作为GitLab CI过程的一部分在另一个容器中的Docker-in-Docker中运行。

1 个答案:

答案 0 :(得分:1)

您正在运行Docker-in-Docker,这意味着当您指定-v卷时,Docker将在主机上查找此目录,因为共享的sock启用了Docker-in- Docker实际意味着您的运行命令在流道容器旁边启动容器。

我在this SO answer中详细解释了这一点:

https://stackoverflow.com/a/46441426/2078207

另请注意此答案下方的评论,以获得解决方案的方向。