手把手教你如何做容器遷移
第一步準(zhǔn)備數(shù)據(jù)
假設(shè)要遷移一個 mysql 服務(wù)(docker部署),由于數(shù)據(jù)庫過大(超過50 GB),用mysqldump備份和還原則太過耗時,下面嘗試拷貝目錄的方式來遷移,詳細(xì)過程如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-699381.html
老機(jī)器:192.168.4.231
新機(jī)器:192.168.4.232
- 老機(jī)器:創(chuàng)建mysql 5.7容器并準(zhǔn)備測試數(shù)據(jù)
docker pull mysql:5.7
mkdir -p /data/docker/mysql/{binlog,log,opt,var}
curl -sL http://iso.sqlfans.cn/docker/yml/mysql-my.cnf -o /data/docker/mysql/my.cnf
docker run --name mysql -v /data/docker/mysql/my.cnf:/etc/my.cnf -v /data/docker/mysql/opt:/opt -v /data/docker/mysql/log:/var/log/mysql -v /data/docker/mysql/var:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=z27SoKdj_JxnyvG8 -d mysql:5.7 --lower_case_table_names=1
sleep 30
docker exec -it mysql /bin/bash -c 'mysql -uroot -pz27SoKdj_JxnyvG8 -e"create database if not exists abc;"'
docker exec -it mysql /bin/bash -c 'mysql -uroot -pz27SoKdj_JxnyvG8 -e"show databases;"'
容器遷移步驟
- 第1步,老機(jī)器:執(zhí)行 docker inspect 找到該容器所映射的外部目錄,示例 /data/docker/mysql/*
[root@192.168.4.231]# docker inspect mysql | more
"HostConfig": {
"Binds": [
"/data/docker/mysql/my.cnf:/etc/my.cnf",
"/data/docker/mysql/opt:/opt",
"/data/docker/mysql/log:/var/log/mysql",
"/data/docker/mysql/var:/var/lib/mysql"
],
- 第2步,老機(jī)器:執(zhí)行 docker ps 找到該容器所使用的鏡像 repository和tag,示例 mysql:5.7
[root@192.168.4.231]# docker ps -a | grep mysql
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da7c4b1a9d4f mysql:5.7 "docker-entrypoint.s…" 29 minutes ago Up 29 minutes 0.0.0.0:3306->3306/tcp mysql
- 第3步,老機(jī)器:執(zhí)行 docker save 導(dǎo)出鏡像(記得帶上repository和tag),語法參考:docker save -o 鏡像包.tar 鏡像名:tag
[root@192.168.4.231]# docker save -o /opt/mysql.20220413.tar mysql:5.7
- 第4步,老機(jī)器:建議將該容器停掉,免得遷移前后的數(shù)據(jù)不一致
[root@192.168.4.231]# docker ps -a | grep mysql
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da7c4b1a9d4f mysql:5.7 "docker-entrypoint.s…" 29 minutes ago Up 29 minutes 0.0.0.0:3306->3306/tcp mysql
[root@192.168.4.231]# docker stop mysql
- 第5步,老機(jī)器:同步鏡像文件及容器目錄到新機(jī)器
[root@192.168.4.231]# scp -r -P1618 /opt/mysql.20220413.tar 192.168.4.232:/opt/
[root@192.168.4.231]# scp -r -P1618 /data/docker/mysql/* 192.168.4.232:/data/docker/mysql/
- 第6步,新機(jī)器:導(dǎo)入該容器所引用的鏡像包.tar,語法參考:docker load -i 鏡像包.tar
[root@192.168.4.232]# docker load -i /opt/mysql.20220413.tar
[root@192.168.4.232]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 3f3447deacaa 12 days ago 455MB
- 第7步,新機(jī)器:啟動容器,最好與老容器的啟動命令一致
docker run --name mysql -v /data/docker/mysql/my.cnf:/etc/my.cnf -v /data/docker/mysql/opt:/opt -v /data/docker/mysql/log:/var/log/mysql -v /data/docker/mysql/var:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=z27SoKdj_JxnyvG8 -d mysql:5.7 --lower_case_table_names=1
- 第8步,新機(jī)器:確認(rèn)一下數(shù)據(jù)
docker exec -it mysql /bin/bash -c 'mysql -uroot -pz27SoKdj_JxnyvG8 -e"show databases;"'
文章來源:http://www.zghlxwxcb.cn/news/detail-699381.html
到了這里,關(guān)于docker如何容器遷移(實(shí)戰(zhàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!