[Notes] Ubuntu下修改docker 镜像存储位置并进行数据迁移

默认情况下docker的镜像和容器都是保存在

/var/lib/docker下面

可以通过

du -h --max-depth=1 /var/lib/docker

  

查看文件夹大小的方式来确认文件夹内是不是有镜像(如有那么一般会很大)。

方法1:

然后在将这个文件夹拷贝到新的地方(比如说更大的硬盘上,假设是/data分区,它挂载在一个单独硬盘上):

sudo cp -r /var/lib/docker /data/docker

  

然后修改docker中默认镜像和容器的保存位置。

sudo vim /etc/docker/daemon.json

  

将里面的data-root改为新的docker容器存储位置,

"data-root": "/data/docker",

  

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

sudo systemctl stop docker
sudo systemctl start docker
sudo systemctl status docker

  

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

方法2:

将/var/lib/docker目录迁往他处

sudo mv /var/lib/docker /data/docker

通过软链接的方式再把它处的文件夹链接会/var/lib/docker,重启docker

ln -s /data/docker /var/lib/docker
sudo systemctl stop docker
sudo systemctl start docker
sudo systemctl status docker