大家好,我才刚使用Docker。我的目标是挂载容器内的目录到宿主机,而不是将宿主机的目录挂载到容器内。。关于后者我知道可以使用-v 参数,但对于前者我不知道应该要如何去做。搜索了一下,据说可以用Volume卷,但我并不知道该如何去使用它,请大家给予帮助,谢谢。

解决方案 »

  1.   

    Dockerfile 定义 Volume, 然后docker run的时候 docker run -v <host_dir>:<volume_dir>
    比如 
    1) VOLUME  ["/var/lib/mysql"]
    2) docker run -d -v /mysql/data:/var/lib/mysql
      

  2.   

    运行docker run --help 命令查看帮助文档
    -v, --volume=[]                 Bind mount a volume-v参数就是你说的挂载的卷。容器跑起来后,对里面所做的任何更改都是不能保存的。是只读的,所以你那样挂载没有意义。你想查看容器的运行状态?可以挂载比如/etc/等系统目录到容器中的/etc目录,这样应该可以。
      

  3.   

    直接访问docker inspect -f {{.GraphDriver.Data.MergedDir}} ${containerid}所指向的目录即可,这就是运行时容器的文件系统。
    例如:
    cd $(docker inspect -f {{.GraphDriver.Data.MergedDir}} test01)
    如果想把容器下的某目录映射到一个宿主机的自定义目录,可以用mount --bind,当然ln -s 也行。