【发布时间】:2018-04-06 02:20:55
【问题描述】:
我想知道如何允许“子”(兄弟)docker 容器访问已安装卷的某些子目录。作为解释,这是一个简单的设置:
我有以下 Dockerfile,它只是将 Docker 安装在 Docker 容器中:
FROM ubuntu
RUN apt-get update && apt-get install -y curl
RUN curl -fsSL https://get.docker.com/ | sh
我的主机上有以下数据目录
/home/user/data/
data1.txt
subdir/
data2.txt
构建父镜像:
[host]$> docker build -t parent .
然后运行父容器:
[host]$> docker run --rm --name parent -it -v /home/user/data/:/data/ -v /var/run/docker.sock:/var/run/docker.sock parent
现在我有一个正在运行的容器,并且在新容器“内部”。由于我将 docker 套接字绑定到父级,因此我可以运行 docker 命令来创建“子”容器,它们实际上是同级容器。数据卷已成功映射:
[parent]$> ls /data/
subdir data1.txt
现在我想创建一个只能看到 subdir 目录的兄弟容器:
[parent]$> docker run --rm --name child -it -v /data/subdir/:/data/ ubuntu
这将创建一个同级容器,我成功地“进入”了容器“内部”,但是新的数据目录是空的。我的假设是因为我告诉它使用“/data/”的卷被主机映射到主机上不存在的目录,而不是使用运行父时定义的卷。
[child]$> ls /data/
<nothing>
我可以做些什么来让这个映射起作用,以便子容器可以在子目录中创建文件,并且父容器可以看到和访问这些文件?不允许孩子查看 data1.txt(或子目录上方的任何其他内容)。
【问题讨论】:
标签: docker docker-volume