我正在使用以下命令在容器内运行 docker:
docker run --rm -ti --privileged -v /var/run/docker.sock:/var/run/docker.sock docker:1.12 sh
在该容器的外壳中,我看到一个包含一堆文件的目录。让我们说/project
一个文件build.gradle
。我想启动一个新容器并使用以下命令挂载此目录
docker run -ti --rm -v /project:/project openjdk:8-jdk bash -c "ls /project"
.
但是看起来项目目录是空的,ls /project
不显示任何文件..
现在尝试挂载文件:
docker run -ti --rm -v /project/build.gradle:/project/build.gradle openjdk:8-jdk bash -c "ls /project/"
这次文件夹显示了文件。
任何知道为什么卷安装无法按预期工作的人。这是权限问题吗?
不。在“docker”容器中,你只能得到一个 Docker 客户端,而不是全部。一旦你在你的“docker”容器中安装了 Docker 套接字,当你执行 Docker 命令时,它们会直接进入在你的实际 Docker 主机上运行的 Docker“服务器”。因此,该文件夹应该存在于您的 Docker 主机中。
示例如何在 docker 中使用 docker 挂载卷:
host$ pwd
/var/my-project
host$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $PWD:/app docker -it sh
/ # ls -l /app ### inside first docker
<LIST OF PROJECT FILES>
/ # docker run -v /var/my-project:/inception docker sh ### you need to pass HOST directory NOT currently running (/app) container directory
/ # ls -l /inception ### inside second docker
<LIST OF PROJECT FILES>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3729 次 |
最近记录: |