如何迁移docker容器和镜像的默认路径

参考链接:

https://sanenthusiast.com/change-default-image-container-location-docker/

 

主要步骤:

1、创建docker配置文件。

2、拷贝原来的目录/var/lib/docker

3、建立docker-proxy和docker-runc的链接文件

 ln -s /usr/libexec/docker/docker-proxy-current /usr/bin/docker-proxy
 ln -s /usr/libexec/docker/docker-runc-current /usr/bin/docker-runc

4、重启服务。

systemctl  stop docker-->systemctl daemon-reload-->systemctl start docker

 

以下写了个脚本

#!/bin/bash
Data_Path=/data/docker_projects  #定义迁移的目录
Store_Type=$(docker info 2>/dev/null |grep -i storage|awk  '{print $3}')   #获取docker的存储设备

[ $(id -u) != 0 ]&&echo "You must use root permission!"&&exit 1   #以root用户操作

[ ! -d /data/docker_projects ]&&mkdir /data/docker_projects
[ ! -d /etc/systemd/system/docker.service.d ]&&mkdir /etc/systemd/system/docker.service.d
[ ! -f /etc/systemd/system/docker.service.d/docker.conf ]&&touch /etc/systemd/system/docker.service.d/docker.conf
cat > /etc/systemd/system/docker.service.d/docker.conf << EOF      #写入配置文件内容
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph="$Data_Path" --storage-driver=$Store_Type #此处会用到目标路径和存储设备,\

 --graph项在不同的环境中设置有点不同,有的不用加双引号,有的不用加根斜线,具体可以在docker启动后,执行“docker info”\

查看一下metadata信息。
EOF

systemctl stop docker          #先要停掉docker,再启动daemon-reload,docker。
echo "About $(du -sh /var/lib/docker) files will be copy to new direction,Please wait a moment!"
echo "-------------------------------------------------------------------------"
#cp -pr /var/lib/docker/* $Data_PathEOF
#rm -rf /var/lib/docker/*

systemctl daemon-reload
systemctl start docker
#docker ps -a|awk 'NR>1{print $1}'|xargs docker start

你可能感兴趣的:(如何迁移docker容器和镜像的默认路径)