一、问题

你在宿主机上有一些数据,想在容器中也能访问到这些数据。

二、解决方案

在运行docker run命令的时候,可以设置 -v选项将宿主机的卷挂载到容器中。比如你想把宿主机/home/304/WorkSpace/docker/ubuntu目录下的文件与容器共享,可以执行:

  1. $ docker run -it -v "$PWD":/ubuntu ubuntu /bin/bash
  2. root@ef765cc05cc5:/# touch /ubuntu/orange
  3. root@ef765cc05cc5:/# eixt
  4. $ ls
  5. orange

在容器启动以后我们创建了orange这个文件,在容器里面我们可以对他进行读写操作,当我在退出容器以后看到被挂载的宿主机卷里面有一样的orange。
docker默认情况下会以读写模式挂载数据卷。如果想以只读方式挂载数据卷,可以在卷名称后通过冒号设置相应的权限。比如上面的例子,如果我只想以只读的方式将工作卷挂载到 容器的 /ubuntu可以使用 -v “$PWD”:/ubuntu:ro。
当我们忘记宿主机的数据卷被挂载到容器什么位置以后,可以通过inspect命令查看数据卷的映射情况如下

  1. # docker inspect -f {{.Mounts}} ef765cc05cc5
  2. [{bind /home/304/WorkSpace/docker/ubuntu /ubuntu true rprivate}]

三、参考

管理容器内的数据(https://docs.docker.com/userguide/dockervolumes)
了解卷(http://container-solutions.com/2014/12/understanding-volumes-docker/)