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

我试图用-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命令的debugging信息时,发现它创build/creds/目录,但由于某种原因,将key.json创build为子目录,而不是复制文件。

我已经看到一些其他的post说,如果你告诉docker run来挂载一个文件无法find,它将创build一个与文件名的容器目录,但因为我没有指定文件名,它知道名称新的目录'key.json'它似乎能够find该文件,但创build它作为一个目录吗? 有没有人遇到过这个?

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

你正在运行Docker-in-Docker,这意味着当你指定一个-v卷时,Docker会在主机上查找这个目录,因为共享的sock启用了Docker-in-Docker实际上意味着你的run命令启动了一个容器和runner容器。

我在这个答案中更详细地解释这个:

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

还请注意这个答案下面的评论,以获得解决scheme的方向。