1. 程式人生 > >如何遷移docker容器和映象的預設路徑

如何遷移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