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

一次性把「正在运行的 3 个容器」无损迁移到 docker-compose 体系,并打成 离线一键包

一次性把「正在运行的 3 个容器」无损迁移到docker-compose体系,并打成离线一键包
全程 5 分钟,以后再启停/升级/迁移只要:

cd /opt/stack docker-compose up -d # 启动 docker-compose stop # 停止 docker-compose pull && docker-compose up -d # 升级

1.创建统一目录

mkdir -p /opt/stack/{mysql,minio,redis} cd /opt/stack

2.把现有数据“搬”到统一目录

# 1.1 MySQL 命名卷 → 本地目录 docker run --rm \ -v mysql-data:/from \ -v /opt/stack/mysql:/to \ alpine ash -c "cd /from && cp -a . /to" # 1.2 MinIO、Redis 已是绑定挂载,直接软链接(或 cp -a 均可) ln -s /opt/minio/data /opt/stack/minio-data ln -s /opt/redis/data /opt/stack/redis-data

若原目录不在/opt/minio/data请改成实际路径;也可用cp -a复制一份,确保迁移时不再依赖老目录

3.生成 docker-compose.yml

cat > docker-compose.yml <<'EOF' version: "3.8" services: mysql: image: mysql:8.0.39 container_name: vm_mysql01 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: 123456 ports: - "3306:3306" volumes: - ./mysql:/var/lib/mysql command: ["--default-authentication-plugin=mysql_native_password"] minio: image: minio/minio:RELEASE.2025-04-22T22-12-26Z container_name: vm_minio01 restart: unless-stopped ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: admin MINIO_ROOT_PASSWORD: admin123456 volumes: - ./minio-data:/data command: server /data --console-address ":9001" redis: image: redis:6.2.6 container_name: vm_redis restart: unless-stopped ports: - "6379:6379" volumes: - ./redis-data:/data mem_limit: 256m command: [ "redis-server", "--appendonly", "yes", "--maxmemory", "200mb", "--maxmemory-policy", "allkeys-lru" ] EOF

4.停旧容器、用 compose 启动新容器

# 3.1 平滑停止旧容器(数据已落盘) docker stop vm_mysql01 vm_minio01 vm_redis docker rm vm_mysql01 vm_minio01 vm_redis # 3.2 一键拉起 docker compose up -d

5.验证

docker compose ps # 三个都是 Up mysql -h127.0.0.1 -uroot -p123456 -e "select 1;" curl -s http://127.0.0.1:9000/minio/health/live docker exec -it vm_redis redis-cli ping

全部正常即可删除旧命名卷(可选):

docker volume rm mysql-data

6.制作离线一键迁移包

# 5.1 导出镜像 docker save mysql:8.0.39 minio/minio:RELEASE.2025-04-22T22-12-26Z redis:6.2.6 \ -o images.tar # 5.2 打包 compose 文件 + 数据 + 镜像 cd /opt tar zcf stack-all-in-one.tar.gz \ stack/ images.tar

→ 得到stack-all-in-one.tar.gz,随便拷到另一台 CentOS 7 机器:

# 目标机任意目录解压 tar zxf stack-all-in-one.tar.gz docker load -i images.tar cd stack docker-compose up -d

整套环境 3 分钟恢复原样。


以后日常命令

cd /opt/stack docker compose stop # 停机 docker compose start # 开机 docker compose pull # 拉最新镜像 docker compose up -d # 升级并重启 docker compose logs -f mysql # 看日志
http://www.cnnetsun.cn/news/6647.html

相关文章:

  • Google购物广告与自然产品列表如何1+1>2?3个被验证的流量协同策略
  • 写程序的时候必须做的一件事?听歌!!我精选粤语歌曲300首无损音乐,可以听十年了。
  • Vibe Coding 的终极委托:当机器拥有自主规划权,人类的“意图纯粹性”何在?
  • 漫画翻译神器manga-image-translator:哪个版本最适合你?
  • SpringBoot中的命名与开发规范
  • Vue 3 + TypeScript 严格模式下的 Performance.now() 实践:构建高性能前端应用
  • 小红书破百的Blog
  • OpenPose人体姿态估计:从零开始掌握5大核心功能
  • 51CTO学堂-Oracle RAC+DG生产实战(4):Oracle21c RAC DataGuard搭建2+2
  • 探索Lenia:发现连续细胞自动机中的数学生命奇迹
  • 2025网络安全学习路线,非常详细!推荐学习
  • RulersGuides.js:网页设计中的精准布局神器
  • 一体式伺服电机在自动咖啡机中的应用案例
  • 对比测试:VMware正版授权vs破解版的真实成本
  • 240亿参数改写中小企业AI规则:Magistral Small 1.2多模态本地化部署革命
  • Java面试题库及答案解析(2026版)
  • Forrester发布流式数据平台报告:Ververica首次跻身领导者行列,实时AI能力获权威认可
  • Wan2.2-T2V-A14B在军事推演沙盘动画中的战术表达潜力
  • 81698A 可调激光器模块
  • AI日报 - 2025年12月11日
  • Rebel框架快速上手:打造更优雅的macOS应用开发体验 [特殊字符]
  • 实测!5 款 AI 论文工具直接封神✨学术党肝稿效率翻 3 倍
  • PyTorch量化稀疏库完全指南:从入门到精通
  • B站硬核会员自动答题助手:AI智能答题的终极解决方案
  • 是德科技 N1092A DCA-M采样示波器(单光通道)
  • 同事写的count(*)性能很差,如何优化?
  • EasyTrans数据翻译神器:告别繁琐ID映射,让数据自动“说话“
  • Klipper振动补偿终极指南:5步实现完美打印表面
  • 掌控信息流:Fluent Reader RSS阅读器完全操作手册
  • 高效文件处理与二维码生成:双平台工具包深度解析