在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里面有没有同步。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐