Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将主机卷装载到通过Dockerfile创建的容器_Docker - Fatal编程技术网

将主机卷装载到通过Dockerfile创建的容器

将主机卷装载到通过Dockerfile创建的容器,docker,Docker,docker的新功能,并且根据关于的文档,由于可移植性,不允许指定主机卷映射。这很好,但是有没有办法将我在MAC中的主机卷映射到linux容器,比如说,我的home dir/Users/bsr到ubuntu映像的/data。docker卷的定义仅讨论docker运行,但不确定创建卷后如何添加卷 在Linux上,您只需通过以下方式将主机系统的目录装载到docker容器 -v /path/to/host/directory:/path/to/container/directory 到docker运

docker的新功能,并且根据关于的文档,由于可移植性,不允许指定主机卷映射。这很好,但是有没有办法将我在MAC中的主机卷映射到linux容器,比如说,我的home dir/Users/bsr到ubuntu映像的/data。docker卷的定义仅讨论docker运行,但不确定创建卷后如何添加卷

在Linux上,您只需通过以下方式将主机系统的目录装载到docker容器

-v /path/to/host/directory:/path/to/container/directory
到docker运行命令

您也可以在文档中看到它:

如果您使用的是boot2docker,事情就更复杂了。问题是boot2docker运行一个小的linux虚拟机来启动docker。因此,如果您按照上述方式装载卷,您将装载小linux虚拟机的目录

使用samba共享的boot2docker GitHub页面的自述文件中描述了解决方法:


在@sciutand的帮助下,以下方法奏效了

git clone https://github.com/boot2docker/boot2docker.git
 cd boot2docker/
 docker build -t my-boot2docker-img .
 docker run --rm my-boot2docker-img > boot2docker.iso
 boot2docker stop
 mv ~/.boot2docker/boot2docker.iso ~/.boot2docker/boot2docker.iso.backup
 mv boot2docker.iso ~/.boot2docker/boot2docker.iso
 VBoxManage sharedfolder add boot2docker-vm -name /Users -hostpath /Users
 boot2docker up
 docker run -d -P --name web ubuntu

谢谢你,大卫。这是有道理的,但在同一个文档中,它说/Users将自动安装在指定的位置:,/Users。但是,我没有看到。但是,如果我在run命令`dockerrun-d-P-v/Users/bsr/web:/usr/local/web-name-web-ubuntu中指定它,我就可以访问主机文件夹。因此,问题是既然运行“创建一个新容器”,是否可以在现有容器上指定-v,并说start with start。还在挖。