记一次wordpress docker迁移过程
1. 查看镜像的挂载点
docker inspect wp-web | grep Mounts -A 50
docker inspect wp-web | grep Mounts -A 50
2. 将挂载文件目录打包
tar -cvf wp-data.tar /var/lib/docker/volumes/32fe7e4a8fc55bf030f3eac666a40c6c52b3d6aa61faa0f0919a44bed1c4632d/_data
tar -cvf mysql-data.tar /var/lib/docker/volumes/6902018c3680a510af9d445d9a48da407bc1242694c9ccb5b9b6a23f728701ec/_data
3. 将容器commit成镜像
docker commit -p wp-web wp-web:migratev1
docker commit -p db-mysql db-mysql:migratev1
4. save命令持久化镜像
docker save -o wp-web.tar wp-web:migratev1
docker save -o db-mysql.tar db-mysql:migratev1
注:save 命令后应接镜像名而不是镜像id(例如:应该是 wp-web:migratev1 而不是 8f5b),否则用load加载的镜像名称和tag都是none,就需要手动重命名:docker tag [镜像id] [新镜像名称]:[新镜像标签]
5. 将所有的打包文件复制到新服务器
# 旧服务器上
tar -cvf wp-migrate.tar db-mysql.tar mysql-data.tar wp-data.tar wp-web.tar
# 新服务器上
scp [email protected]:/root/wp-migrate.tar ./Desktop/wp-migrate/
6. 新服务器上解压
tar -xvf wp-migrate.tar
tar -xvf mysql-data.tar
tar -xvf wp-data.tar
7. load 加载镜像
docker load -i db-mysql.tar
docker load -i wp-web.tar
8. 启动镜像
docker run --name db-mysql --restart=always -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=zh613 -d --network hunt_website aefabe69b5c4
docker run --name wp-web --restart=always -v /etc/localtime:/etc/localtime --network hunt_website -d -e WORDPRESS_DB_HOST=db-mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=zh613 -e WORDPRESS_DB_NAME=wp_db -e WORDPRESS_TABLE_PREFIX=wp -p 8081:80 8f5beecacb7c
# 如果启动没问题,再停止,后面修改挂载文件
docker stop wp-web db-mysql
9. 查看两个新启动容器的文件挂载点,并将从旧服务器打包的数据覆盖过去
以下为数据库镜像示例,wordpress同理
docker inspect db-mysql | grep -A 20 Mounts
sudo rm -rf /var/lib/docker/volumes/98ee88964f37d27e6501604525427050d1c9589e131b33b588710b2ce2545925/_data && sudo cp -rf var/lib/docker/volumes/6902018c3680a510af9d445d9a48da407bc1242694c9ccb5b9b6a23f728701ec/_data /var/lib/docker/volumes/98ee88964f37d27e6501604525427050d1c9589e131b33b588710b2ce2545925/
注:var/lib/docker/volumes/6902018c3680a510af9d445d9a48da407bc1242694c9ccb5b9b6a23f728701ec/_data 是从旧服务器复制来的数据解压后的目录
10. 启动起来看看
docker start wp-web db-mysql