【问题标题】:$(pwd) at docker-in-docker volume mounts unexpected directorydocker-in-docker 卷上的 $(pwd) 挂载了意外的目录
【发布时间】:2020-02-20 05:40:36
【问题描述】:

例子:

pavel@Z546:~/test/dind-volumes$ ls
test.txt
pavel@Z546:~/test/dind-volumes$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/app -w /app -it docker sh
/app # ls
test.txt
/app # pwd
/app
/app # docker run -v $(pwd):/app2 -w /app2 -it alpine sh
/app2 # ls
share       tomita-cfg
/app2 # pwd
/app2

-v $(pwd):/app2 挂载在哪个位置?它不是主机操作系统上的~/test/dind-volumessharetomita-cfg 是来自主机操作系统的文件夹,但路径完全不同,甚至不是从 ~ 开始的

【问题讨论】:

    标签: docker docker-volume docker-in-docker


    【解决方案1】:

    挂载到新容器中的目录是主机上/app 目录中的任何目录。

    不是Docker in Docker,因为我理解该术语的意思是:您没有在 Docker 容器内运行 Docker 的第二个副本,您只是在内部访问主机的 Docker 套接字一个容器。

    在您展示的场景中,当您在安装了主机的 Docker 套接字并运行 docker run -v $(pwd):/app2 ... 的容器内时,容器内的外壳首先将 $(pwd) 扩展为 /app,然后向Docker 守护进程启动一个容器,/app 绑定安装到/app2。从 Docken 守护进程的角度来看,这与直接在主机上运行相同的命令没有区别。

    【讨论】:

    • 感谢您的解释。使用环境变量解决:docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/app -w /app -e PATH_HOST=$(pwd) -it docker sh 然后docker run -v ${PATH_HOST}:/app2 -w /app2 -it alpine sh
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 2023-04-09
    • 2015-10-01
    • 2016-03-12
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多