docker容器内的程序经常需要访问、调用宿主机目录中的数据,每次都要导入导出非常麻烦费力。
接下来,一步步实现将宿主机的指定文件夹挂载到docker容器中。
1. 打开Oracle VM VitualBox:
2. 点击【设置】->点击左侧的【共享文件夹】
3. 双击默认的【c/Users \\?\c:\Users】,进行编辑,这里设置D盘下的data为挂载共享目录,名称可修改,此处设为"data"。 点击确定
4. 重启virtualbox虚拟机,中间有等待时间:
5. 创建容器,测试是否能访问共享目录
基于centos镜像创建name为centos-1的容器,并使用参数-v将D:\data目录挂载到容器的/home目录下:
C:\Users\Administrator>docker run -d -it --name centos-1 -v /data:/home centos
9b871d35e1669640dd027a64214b3f78d9faec8b29e91f23aa717d7b7b5036ed
进入容器内部:
C:\Users\Administrator>docker exec -it centos-1 /bin/bash
[root@e952aff59318 /]#
查看/home目录是否和本机的D:\data目录一致 :
[root@e952aff59318 /]# cd home [root@e952aff59318 home]# ls a.txt db log sslkey.log
一致则表示挂载成功。
补充知识:docker镜像文件导入与导出,支持批量
工作中经常需要拉取一些国外的镜像,但是网络限制等原因在公司拉取很慢,所以我习惯用亚马逊服务器拉取镜像,导出后下载到本地再导入开发环境
1. 查看镜像id
sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/calico/node v1.0.1 c70511a49fa1 6 weeks ago 257 MB hello-world latest 48b5124b2768 2 months ago 1.84 kB quay.io/coreos/flannel v0.7.0 63cee19df39c 2 months ago 73.8 MB quay.io/calico/cni v1.5.5 ada87b3276f3 2 months ago 67.1 MB
2. 选择要打包的镜像,执行打包命令
sudo docker save -o quay.io-calico-node-1.tar quay.io/calico/node
会在当前目录下生成导出文件xxx.tar,然后将此文件下载到本地
3. 在开发环境导入上述打包的镜像
docker load -i quay.io-calico-node-1.tar
0a43edc59c00: Loading layer 27.59 MB/27.59 MB 69a5574b2581: Loading layer 3.636 MB/3.636 MB fb0933709f36: Loading layer 3.913 MB/3.913 MB 7384abd120f5: Loading layer 3.859 MB/3.859 MB e34911610de0: Loading layer 27.06 MB/27.06 MB d6ec327c8cbe: Loading layer 6.656 kB/6.656 kB Loaded image ID: sha256:ada87b3276f307a6b1b1ada15820b6c9842fd839fe5cc46ad5db8af81f7fd271
至此,可以使用本地镜像了!
4. 批量导入导出镜像工具
访问我的github获取
以上这篇windows宿主机和docker容器设置挂载共享文件夹的步骤就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
问题内容: 我在Windows中使用Docker Toolbox,并尝试将Windows文件夹安装在docker-compose.yml文件中,如下所示: 我的目标是将Docker Toolbox已经创建的boot2docker VM映像安装到该映像,然后从该映像加载到其中的nginx容器。 不幸的是,它不起作用。我在boot2docker映像中找到一个文件夹sss,但是它没有指定我的Window
问题内容: 有谁知道如何使用centos基本映像在docker容器中安装nfs共享?我已经尝试过以下命令: 并得到下一个错误: 当我尝试将其与 -o nolock 选项一起使用时,错误是: 问题答案: 对于使用,您需要具有此功能,Docker在创建容器时会丢弃该功能。 有几种解决方案: 用标志启动容器。这将导致Docker保留该功能,从而使您可以从容器内挂载NFS共享。这可能是一个安全问题;不要在
我有一个docker容器运行良好。它在目录中生成一些文件。我需要这些文件做些测试。但当此容器停止时,所有内容都将被删除。所以我需要将这个文件从容器复制到主机。 我有一个python应用程序运行在生成文件的容器中。我需要一些命令或任何方式,通过这些命令,我可以在容器停止时将发送到结尾的主机。 为此,我可以使用命令,我尝试了它,但它给我一个错误,因为没有安装docker。 如何将文件从容器共享到主机?
问题内容: 我有一个在Docker容器中运行的Web应用程序。此应用程序需要访问我们公司文件服务器(带有Active Directory域控制器的Windows Server)上的某些文件。我尝试访问的文件是为我们的客户创建的图像文件,Web应用程序将它们显示为客户产品组合的一部分。 在我的开发机器上,我通过条目安装了适当的文件夹,并且通过参数将主机安装点安装在Docker容器中。这很完美。 现在
问题内容: 我在Win7上运行boot2docker 1.3。 我想连接一个共享文件夹。 在VirtualBox Manager中,在图像属性->共享文件夹下,添加了所需的文件夹,并将其命名为“ c / shared”。选中“自动安装”和“设为永久”复选框。 当boot2docker启动时,它不会被挂载。我必须另外做一件事: 才能显示出来。由于每次使用docker时都需要它,因此我希望它仅在启动时
问题内容: 使用docker客户端,有一种方法可以与docker容器共享Windows中的文件夹,而无需先通过Virtual Box VM共享文件夹。 明白具有从双斜杠的需要这个和这个 从Windows的Docker客户端运行以下命令 但是当在/ development / windev上执行ls时,结果发现它是空的。 当我尝试通过以下命令挂载c / Users / username文件夹时,我没