修改Docker默认镜像和容器存储位置(超详细!!!)

修改Docker默认镜像和容器存储位置(超详细!!!)

码农世界 2024-05-23 前端 60 次浏览 0个评论

Ubuntu20.04 修改Docker默认镜像和容器存储位置

Docker 默认安装的情况下,会使用 /var/lib/docker/ 目录作为存储目录,用以存放拉取的镜像和创建的容器等。不过由于此目录一般都位于系统盘,遇到系统盘比较小,而镜像和容器多了后就容易尴尬,这里说明一下如何修改 Docker 的存储目录。

最简单粗暴的办法,当然就是直接把数据盘挂载到 /var/lib/docker 目录下,不过这样对整体影响太大,其他程序需要使用数据盘时很不方便,也可以使用软链接方式把 /var/lib/docker 和数据盘目录连接在一起同样可以实现,但是后期可能不方便维护,所以还是从 Docker 端的修改入手。

前提需要了解:

  • Docker 当前使用的默认存位
  • Docker 当前使用的存储驱动程序
  • 镜像和容器要存放的新存储空间

    一、查看当前docker的默认存储目录

    docker info
    
    • 可以看到docker存储驱动程序和默认存位:
      Storage Driver: overlay
      Docker Root Dir: /var/lib/docker
      

      二、停止docker服务

      sudo systemctl stop docker.service
      

      三、目录迁移

      3.1 创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在/mnt目录下面建了 /mnt/docker目录,执行的命令是:
      # 查看文件夹大小
      sudo du -hd 1
      sudo mkdir -p /mnt/docker
      
      3.2 迁移/var/lib/docker目录下面的文件到 /home/docker
      sudo cp -r /var/lib/docker/* /mnt/docker/
      

      四、修改配置文件

      4.1 编辑 /etc/docker/daemon.json 文件
      sudo vim /etc/docker/daemon.json
      

      默认情况下这个配置文件是没有的,这里实际也就是新建一个,然后写入以下内容:

      {
        "data-root": "/mnt/docker"
      }
      

      取决于具体的ubuntu版本或者kernel版本决定要用data-root还是graph

      /mnt/docker --> docker的存储路径

      • 此文件还涉及默认源的设定,如果设定了国内源,那么实际就是在源地址下方加一行,写成:
        {
          "registry-mirrors": ["http://hub-mirror.c.163.com"],
          "data-root": "/mnt/docker"
        }
        
        4.2 编辑docker配置文件:
        sudo vim /etc/systemd/system/multi-user.target.wants/docker.service
        # 将ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock修改以下内容:
        ExecStart=/usr/bin/dockerd --graph=/mnt/docker --storage-driver=overlay
        

        五、保存退出,然后重启 docker 服务

        • 重启docker服务,就可以更新docker默认的镜像容器保存位置,特别注意,如果新的保存位置里拷贝了原来容器保存位置里的所有内容,那么镜像数据等也就迁移过来了。
          sudo systemctl daemon-reload
          sudo systemctl restart docker
          sudo systemctl status docker
          

          六、检查docker存储路径是否配置成功

          docker info
          

          七、启动成功后,再确认之前的镜像还在

          docker ps -a
          docker images
          

          八、确定容器、镜像没问题后删除/var/lib/docker/目录中的文件。

          rm -rf /var/lib/docker/*
          

          docker主要是做了文件系统的隔离,所以每个镜像和容器实际上都是依赖块隔离的硬盘空间(在里面部署一个隔离的文件系统),所以可以通过直接拷贝的方式进行迁移,而不需要担心有什么依赖关系无法通过拷贝带过去。

          注:仅供学习参考,如有不足欢迎指正!

转载请注明来自码农世界,本文标题:《修改Docker默认镜像和容器存储位置(超详细!!!)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,60人围观)参与讨论

还没有评论,来说两句吧...

Top