docker容器迁移(以jenkins为例)

目标:将服务器A中docker中的jenkins迁移到服务器B中docker

 

服务器A jenkins部署命令为:

docker run -d \
  --name jenkins \
  -p 9028:8080 \
  -p 50000:50000 \
  -v /usr/jenkins_data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --restart unless-stopped \
  jenkins/jenkins:lts

 

服务器A的操作

# 停止 Jenkins 容器
docker stop jenkins

# 提交容器为镜像
docker commit jenkins jenkins_backup

# 保存镜像为文件
docker save -o jenkins_backup.tar jenkins_backup

# 导出数据卷
# 查看数据卷信息
docker inspect jenkins | grep -A 10 '"Mounts"'

# 备份数据卷内容(数据卷挂载在 /usr/jenkins_data)(注意命令最后的空格和点)
tar czf jenkins_data_backup.tar.gz -C /usr/jenkins_data .

# 传输文件到服务器B
scp jenkins_backup.tar user@new-server:/tmp/
scp jenkins_data_backup.tar.gz user@new-server:/tmp/

服务器B的操作

# 加载镜像
docker load -i /tmp/jenkins_backup.tar

# 创建数据目录
mkdir -p /usr/jenkins_data

# 恢复数据
tar xzf /tmp/jenkins_data_backup.tar.gz -C /usr/jenkins_data

# 设置权限
chown -R 1000:1000 /usr/jenkins_data

# 运行 Jenkins 容器
docker run -d \
  --name jenkins \
  -p 9028:8080 \
  -p 50000:50000 \
  -v /usr/jenkins_data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --restart unless-stopped \
  jenkins_backup

 

posted @ 2025-10-28 22:44  面向bug编程  阅读(5)  评论(0)    收藏  举报