在docker中挂载硬盘
最近,在折腾关键点检测的东东,于是乎…生成了好多HDF5格式的数据,我的天!基本上5000张224*224的数据生成HDF5就要1GB,于是。。。我的固态炸了!!于是,就想能不能再docker上挂载电脑上的硬盘,而不仅仅只能用home/user下的内存空间~
话不多说,直接上步骤:
1.停止 docker 引擎
systemctl stop docker.service
2.编辑config.v2.json
vim /var/lib/docker/containers/<container-ID>/config.v2.json
'其中<container-ID>就是你想让哪个docker容器挂载硬盘空间,如果想要多个容器共享一个挂载硬盘,那就得挨个打开每个容器的config.v2.json文件'
3.更换config.v2.json中MountPoints
在config.v2.json查找MountPoints部分,通常来说,要是在创建容器的时候没有选择挂载硬盘,那么在这种情况下是空的:“MountPoints”:{}。接下来用这样的东西替换内容。
"MountPoints": {
"/mnt": {
"Source": "/home/<user-name>", #这个路径就是你要挂载的路径,比如说我的挂载路径为:/media/zz/newdir
"Destination": "/mnt", #这个路径就是挂载路径映射到你在容器里面的路径,这里我就简单设置为/mnt
"RW": true,
"Name": "",
"Driver": "",
"Type": "bind",
"Propagation": "rprivate",
"Spec": {
"Type": "bind",
"Source": "/home/<user-name>", #同上Source
"Target": "/mnt" #同上Destination
},
"SkipMountpointCreation": false
}
}
上述内容只需要修改"Source"、“Destination”、"Target"这些路径就可以了,其他的直接复制下来就可以了。然后,保存退出vim。
4.重启docker服务
systemctl start docker.service
5.重启docker容器
docker start <container-name/ID>
大功告成~~
6.测试是否挂载成功
首先,假设我在config.v2.json中MountPoints中"Source"路径为:/media/zz/newdir,"Destination"的路径为:/mnt。
(1).首先在/media/zz/newdir中随便创建一个文件夹或者文件,然后前往容器中/mnt路径下寻找,是否同步。
(2).在容器中/mnt路径下也是随便创建一个文件夹或者文件,看/media/zz/newdir里面有没有同步。