我在运行时挂载到Docker的文件在哪里?

时间:2019-06-19 19:52:23

标签: docker

我在运行时将我的机密文件secret.json挂载到了本地docker,尽管工作正常,但似乎在任何地方都找不到此卷。

我的docker文件如下所示,并且没有引用密码:

RUN mkdir ./app
ADD src/python ./app/src/python

ENTRYPOINT ["python"]

然后我跑了

docker build -t {MY_IMAGE_NAME} .
docker run -t -v $PATH_TO_SECRET_FILE/:/secrets/secret.json  \
  -e MY_CREDENTIALS=/secrets/secret.json \
  {MY_IMAGE_NAME} ./app/src/python/runner.py

这在本地成功运行,但在我运行

docker run --entrypoint "ls" {MY_IMAGE_NAME}

我没有看到卷secrets

另外,如果我跑步

docker volume ls

它没有看起来像secrets的东西。

没有环境变量MY_CREDENTIALS,脚本将无法运行。因此,我确定秘密文件已安装在某个位置,但无法确定它在哪里。有想法吗?

1 个答案:

答案 0 :(得分:2)

您实际上是使用正在运行的命令创建两个单独的容器。第一个docker run命令从已安装了卷的映像创建一个容器,然后第二个命令从同一映像创建一个没有任何卷的新容器(因为您没有在命令中定义任何卷)

我建议您给容器起一个这样的名称

docker run -t -v $PATH_TO_SECRET_FILE/:/secrets/secret.json  \
  -e MY_CREDENTIALS=/secrets/secret.json \
  --name my_container {MY_IMAGE_NAME} ./app/src/python/runner.py

然后在该容器上运行exec

docker exec -it my_container sh