当前位置: 首页 > news >正文

docker如何容器迁移(实战)

手把手教你如何做容器迁移

第一步准备数据

假设要迁移一个 mysql 服务(docker部署),由于数据库过大(超过50 GB),用mysqldump备份和还原则太过耗时,下面尝试拷贝目录的方式来迁移,详细过程如下:

老机器:192.168.4.231
新机器:192.168.4.232
  • 老机器:创建mysql 5.7容器并准备测试数据
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=1sleep 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步,老机器:执行 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步,老机器:执行 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步,老机器:执行 docker save 导出镜像(记得带上repository和tag),语法参考:docker save -o 镜像包.tar 镜像名:tag
[root@192.168.4.231]# docker save -o /opt/mysql.20220413.tar mysql:5.7
  • 第4步,老机器:建议将该容器停掉,免得迁移前后的数据不一致
[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步,老机器:同步镜像文件及容器目录到新机器
[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步,新机器:导入该容器所引用的镜像包.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步,新机器:启动容器,最好与老容器的启动命令一致
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步,新机器:确认一下数据
docker exec -it mysql /bin/bash -c 'mysql -uroot -pz27SoKdj_JxnyvG8 -e"show databases;"'
http://www.lryc.cn/news/92469.html

相关文章:

  • Android kotlin序列化之Parcelable详解与使用(二)
  • C++ 类设计的实践与理解
  • 循环链表的创建
  • 如何让GPT的回答令人眼前一亮,不再刻板回复!
  • JMeter测试笔记(四):逻辑控制器
  • 【计算机组成原理·笔记】I/O接口
  • MIT6.024学习笔记(二)——图论(1)
  • 饼状图使用属性时,使用驼峰命名法
  • 使用Spring Boot、Spring Security和Thymeleaf的整合示例
  • Linux--ServerProgramming--(7)IPC
  • 最优化理论-KKT定理的推导与实现
  • chatgpt赋能python:Python中引入其他包的指南
  • 设计模式-组合模式
  • DMBOK知识梳理for CDGA/CDGP——第四章 数据架构(附常考知识点)
  • MyBatisPlus总结(1.0)
  • 职场老油条表示真干不过,部门新来的00后测试员已把我卷崩溃,想离职了...
  • 【每日挠头算法题(1)】——旋转字符串|亲密字符串
  • 什么是 tokens,ChatGPT里面的Tokens如何计数?
  • 工业镜头分类、相关参数含义
  • 码蹄杯语言基础:数组(C语言)
  • DJ4-2 程序的装入和链接
  • 开源项目合集....
  • 机器学习 | 降维问题
  • Ubuntu20.04平台下使用二进制包部署MongoDB-6.0.4单实例
  • Snipaste工具推荐
  • MinIO快速入门——在Linux系统上安装和启动
  • 07.JavaWeb-Vue+elementUI
  • 经典面试题---【第一档】
  • 欧美同学会第三届“双创”大赛——空天装备产业赛区(浙江诸暨)正式启动,开启报名通道
  • python3 爬虫相关学习8:python 的常见报错内容 汇总收集