Docker容器迁移
推荐方法一、
docker镜像, 容器等信息通常是默认存储在/var/lib/docker目录下的,而/var对应的磁盘空间一般都不是很大,需要我们将/var/lib/docker迁移到空间足够的挂载盘中去。
- 停掉正在运行的docker服务:
systemctl stop docker
- 将docker存储目录拷贝到要迁移的最够大目录中去,eg:/home/docker/lib/
rsync -r -avz /var/lib/docker /home/docker/lib/
- 修改以前的docker目录为docker-old
mv /var/lib/docker /var/lib/docker-old
- 软链接迁移目录到原目录
ln -s /home/docker/lib/docker /var/lib/
- 重启docker
systemctl start docker 或 systemctl restart docker
- 验证镜像和容器可以正常运行,则删除。在未确定镜像和容器正常运行前勿删。
rm -rf /var/lib/docker-old
方法二、
docker镜像, 容器等信息通常是默认存储在/var/lib/docker目录下的,而/var对应的磁盘空间一般都不是很大,需要我们将/var/lib/docker迁移到空间足够的挂载盘中去。
- 停掉正在运行的docker服务:
systemctl stop docker
- 将docker存储目录拷贝到要迁移的最够大目录中去,eg:/home/docker/lib/
rsync -r -avz /var/lib/docker /home/docker/lib/
- 修改配置(如果不存在配置目录则创建,存在则忽略)
mkdir -p /etc/systemd/system/docker.service.d/
- 编辑devicemapper.conf
vi /etc/systemd/system/docker.service.d/devicemapper.conf
[Service] ExecStart= ExecStart=/usr/bin/dockerd--graph=/home/docker/lib/docker
- 修改daemon.json
vi /etc/docker/daemon.json
#添加 {"storage-driver": "devicemapper" }
此处不修改可能会出现Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
- 重新加载systemd管理器配置
systemctl daemon-reload
- 重启docker服务
systemctl start docker 或 systemctl restart docker
- 看目录是否已被更改
docker info 显示 Docker Root Dir: /home/docker/lib/docker 则表明修改成功
- 验证镜像和容器可以正常运行,则删除。在未确定镜像和容器正常运行前勿删。
rm -rf /var/lib/docker
本文来自博客园,作者:曾经已是追忆,转载请注明原文链接:https://www.cnblogs.com/hehanhan/p/18371308