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