摘要
原创
原环境是购买的国内一家docker云解决方案公司的一套私有环境,搭建在公司的阿里云服务器上。
整套环境包括registry、web管理界面、api接口等;主要使用单机的形式运行,新版本功能较为完善,但需要重新购买,因此决定撤掉这套环境。
由于之前是将容器当做虚拟机的形式使用的,因此迁移过程只迁移以下部分:
- registry中镜像
- dockerfile
- 所有容器(保留原ip)
环境说明
原环境
- 系统:ubuntu14.04
- 一台master(web,api,registry,etcd)
- 四台node (30.7/24 ~ 30.10/24)
迁移环境
- 系统:ubuntu14.04
- 一台master(web,api,registry,etcd)
- 四台node (30.7/24 ~ 30.10/24),每台机器配置三个docker网桥
- 搭建etcd集群
环境搭建
安装docker
- 172.16.7.1 master
- docker0 172.30.1.1/24
- 172.16.7.2 node01
- docker0 172.30.2.1/24
- docker1 172.30.7.1/24
- docker2 172.30.9.1/24
- 172.16.7.3 node02
- docker0 172.30.3.1/24
- docker1 172.30.8.1/24
- docker2 172.30.10.1/24
1 | apt update && apt upgrade |
配置etcd集群
master配置
安装配置registry
网桥配置
1 | $ cat ip0.sh |
node配置
网桥配置
1 | $ cat ip0.sh |
容器ip配置脚本
1 | cat set_ip.sh |
容器启动脚本
1 | cat create.sh |
迁移步骤
- 将容器打包成镜像
- 将打包好的镜像导出成tar包
- 将导出的tar包scp到导入端进行导入
- 启动容器,配置ip
- 修改路由
1 | docker commit -p cont_name img_name |
修复一个问题
偶然发现同一个宿主机上的两个网段机器不通,发现是docker自己加了iptables,应该是因为资源隔离的问题。
1 | # Generated by iptables-save v1.4.21 on Fri Feb 24 15:32:26 2017 |