我们注意到容器占据了很多空间,其中一个原因是镜像。
我们希望搬移镜像。
目前我知道,它们存储在
是否有办法将这些镜像移到另一个位置或永久磁盘上?
我们希望搬移镜像。
目前我知道,它们存储在
/var/lib/docker/graph/<id>/layer
。是否有办法将这些镜像移到另一个位置或永久磁盘上?
/var/lib/docker/graph/<id>/layer
。将图片移动到另一个驱动器或服务器:
docker save image_name > image_name.tar
mv image_name.tar /somewhere/else/
将其重新加载到 Docker 中
docker load < image_name.tar
参考文献。
这里有一个简单的方法来移动Docker的数据:
sudo service docker stop
sudo mv /var/lib/docker /a/new/location
sudo ln -s /a/new/location /var/lib/docker # Create a symbolic link
sudo service docker start
不需要更改DOCKER_OPTS
或使用-g /path
。
您可以将 /var/lib/docker 挂载到另一个磁盘上,或者使用 -g /path
启动守护程序来告诉 Docker 使用不同的目录进行存储。
使用@creack的答案,我在Ubuntu上执行了以下操作,将整个docker镜像/容器文件夹移动到新位置/磁盘。这样做的好处是,安装任何新的镜像时都会使用新的磁盘位置。
首先停止docker服务:
sudo service docker stop
然后将Docker文件夹从默认位置移动到您的目标位置:
sudo mv /var/lib/docker /thenewlocation
然后编辑/etc/default/docker
文件,插入/修改以下行,将新位置作为docker服务的参数提供:
DOCKER_OPTS="-g /thenewlocation/docker"
sudo service docker start
这对我来说完全有效 - 所有我的图片都保持不变。
/var/lib/docker
。当我执行ps aux | grep docker
时,我发现该进程没有在配置文件中添加的-g /foo
参数。 - Hi-Angel-g
选项有效。将-g /foo
插入到docker.service
文件中对我来说是有效的。但这不是一个好的选择,因为更新可能会覆盖该文件。 - Hi-Angel/etc/docker/daemon.json
,文件内容为{ "data-root": "/my/path" }
,然后重新启动docker。虽然你在 ps aux
中看不到任何更改,但是docker确实会以这种方式使用/my/path
,如果之前删除了旧的/var/lib/docker
,则不会被重新创建。 - Hi-Angel