• 概述
  • 步骤
    • 198主机上的操作:

      • 1.停止容器(也可以不停止,只要下一步commit成功即可)
      • 2.将容器commit为镜像
      • 3.save镜像为tar文件
      • 4.将tar文件scp到 目标docker主机
    • 197主机上的操作
      • 5.在目标主机docker load导入
      • 6.目标主机启动容器
      • 7 为宿主机新增一个网桥bridge0,并且配置iptables
    • 8 调用脚本手工分配IP
      • manual_config_static_ip.sh
  • 第二种方式 export

概述

需要重新部署197主机环境,copy198的镜像 进行迁移。

将容器comit成镜像,使用save和load进行镜像迁移,最后根据镜像启动容器。

步骤

198主机上的操作:

[root@entel2 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
………………………..
ec1f968cc0d0 entel_base_image:withtt_oracle “/usr/sbin/sshd -D” 12 weeks ago Up 4 weeks crm
………………………..

1.停止容器(也可以不停止,只要下一步commit成功即可)

[root@entel2 docker]# docker stop crm
crm

2.将容器commit为镜像

[root@entel2 docker]# docker commit ec1f968cc0d0 entel_crm_image
6efd670bc0797350799425efd28191e53f17b494e44f92879c55dae6bf36c89f[root@entel2 docker]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
entel_crm_image            latest              6efd670bc079        17 seconds ago      8.335 GB

3.save镜像为tar文件

[root@entel2 docker]# docker save -o /docker/entle_crm_image.tar  entel_crm_image
[root@entel2 docker]# cd /docker
[root@entel2 docker]# du -sh entle_crm_image.tar
7.8G    entle_crm_image.tar

4.将tar文件scp到 目标docker主机

[root@entel2 docker]# scp entle_crm_image.tar root@10.45.7.197:/docker
root@10.45.7.197's password:
entle_crm_image.tar            100% 7980MB  96.2MB/s   01:23

197主机上的操作

5.在目标主机docker load导入

[root@entel1 docker]# cd /docker
[root@entel1 docker]# du -sh entle_crm_image.tar
7.8G    entle_crm_image.tar
[root@entel1 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@entel1 docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE[root@entel1 docker]# docker load --input entle_crm_image.tar
[root@entel1 docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED                  VIRTUAL SIZE
entel_crm_image     latest              6efd670bc079        Less than a second ago   8.335 GB

load成功

6.目标主机启动容器

[root@entel1 docker]# docker run -d --name crm entle_crm_image
Unable to find image 'entle_crm_image:latest' locally
Pulling repository entle_crm_image
Get https://index.docker.io/v1/repositories/library/entle_crm_image/images: dial tcp: lookup index.docker.io: no such host

丢,entle_crm_image 名字写错了……
也可以使用imageid来启动

[root@entel1 docker]# docker run -d --name crm 6efd670bc079
39dac87560c335f0129a2c6e980b674559cdc157b74e37811e1bb7246109d169
[root@entel1 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS               NAMES
39dac87560c3        6efd670bc079        "/usr/sbin/sshd -D"   34 seconds ago      Up 33 seconds       8080/tcp            crm      

这种方式创建的 ,默认分配的IP,我们想手动分配IP ,所以
先停止crm,然后 移除crm容器

[root@entel1 ~]# docker  stop crm
[root@entel1 ~]# docker rm crm 

再重新创建容器,使用如下命令:

[root@entel1 ~]# docker run -it -d --ipc=host -h=crm --name crm --net=none entel_crm_image  /usr/sbin/sshd -D
f936f206d2ed9c9e1a7773a5be9b5d9a634ddb8ac46034d78df9a1a7d417625e

7 为宿主机新增一个网桥bridge0,并且配置iptables

[root@entel1 ~]# brctl show
bridge name bridge id       STP enabled interfaces
docker0     8000.56847afe9799   no  [root@entel1 ~]# brctl addbr bridge0[root@entel1 ~]# brctl show
bridge name bridge id       STP enabled interfaces
bridge0     8000.000000000000   no
docker0     8000.56847afe9799   no      [root@entel1 ~]# ifconfig bridge0 172.25.243.254 netmask 255.255.255.0 up[root@entel1 ~]# ifconfig bridge0
bridge0   Link encap:Ethernet  HWaddr 1E:0D:4A:6A:C8:82  inet addr:172.25.243.254  Bcast:172.25.243.255  Mask:255.255.255.0inet6 addr: fe80::884a:45ff:fede:17a9/64 Scope:LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:5058725 errors:0 dropped:0 overruns:0 frame:0TX packets:8036183 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:3775394468 (3.5 GiB)  TX bytes:7018918104 (6.5 GiB)[root@entel1 ~]# iptables -t nat -A PREROUTING -p tcp -d 10.45.7.197 --dport 21205 -j DNAT --to-destination 172.25.243.103 :22[root@entel1 ~]# service iptables save[root@entel1 ~]#  iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           ADDRTYPE match dst-type LOCAL
DNAT       tcp  --  0.0.0.0/0            10.45.7.197         tcp dpt:21205 to:192.168.123.205:22 Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8         ADDRTYPE match dst-type LOCAL Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           Chain DOCKER (2 references)
target     prot opt source               destination
[root@entel1 ~]#

8 调用脚本手工分配IP

[root@entel1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS               NAMES
f936f206d2ed        entel_crm_image     "/usr/sbin/sshd -D"   20 minutes ago      Up 20 minutes                           crm
[root@entel1 ~]#  ./manual_config_static_ip.sh  f936f206d2ed 172.25.243.103   24  172.25.243.254  crm

manual_config_static_ip.sh

#!/bin/bash
if [ -z $1 ] || [ -z $2 ] || [ -z $3 ] || [ -z $4 ] || [ -z $5 ];
thenecho "*****Input the necessary parameters: CONTAINERID IP MASK GATEWAY ETHNAME"echo "*****Call the script like: sh manual_con_static_ip.sh  b0e18b6a4432 192.168.5.123 24 192.168.5.1 deth0"exit
fiCONTAINERID=$1
SETIP=$2
SETMASK=$3
GATEWAY=$4
ETHNAME=$5#verify the network card exist or not
ifconfig $ETHNAME > /dev/null 2>&1
if [ $? -eq 0 ]; thenread -p "$ETHNAME exist,do you want delelte it? y/n " delif [[ $del == 'y' ]]; thenip link del $ETHNAMEelseexitfi
fi
#
pid=`docker inspect -f '{{.State.Pid}}' $CONTAINERID`
mkdir -p /var/run/netns
find -L /var/run/netns -type l -deleteif [ -f /var/run/netns/$pid ]; thenrm -f /var/run/netns/$pid
fi
ln -s /proc/$pid/ns/net /var/run/netns/$pid
#
ip link add $ETHNAME type veth peer name vethContainer
brctl addif bridge0 $ETHNAME
ip link set $ETHNAME up
ip link set vethContainer netns $pid
#
ip netns exec $pid ip link del eth0 > /dev/null 2>&1
#
ip netns exec $pid ip link set dev vethContainer name eth0
ip netns exec $pid ip link set eth0 up
ip netns exec $pid ip addr add $SETIP/$SETMASK dev eth0
ip netns exec $pid ip route add default via $GATEWAY

第二种方式 export

将容器export为tar文件,然后目标主机import为镜像,最后使用镜像启动容器

这个方法,启动容器时,默认并不会启动程序,需启动容器时加启动参数。

经常会出现问题,不建议使用该方法。

Docker容器导入导出相关推荐

  1. docker 容器 导入 导出

    导出容器 方法1 docker export master>master.tar 方法2 docker export -o slave.tar fa2a8cb04b58 其他 master为容器 ...

  2. Docket学习2《docker安装nginx、安装tomcat、安装Centos7、容器导入导出、镜像上传到仓库》

    上一篇:Docker学习1<环境准备.原理.常用命令> 目录 一.安装nginx镜像 1.获取nginx的版本 2.下载nginx 3.运行nginx 4.开放端口 5.测试 6.端口暴露 ...

  3. docker 镜像容器导入导出、查看日志、拷贝文件命令

    1. 本地文件拷贝到docker 容器中,参考 docker cp /root/pcl-pcl-1.8.1.tar.gz 7ff95b333e12:/docker cp /root/lib64_a 7 ...

  4. docker images 保存导入导出、容器导入导出

    Docker:镜像操作和容器操作 镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello- ...

  5. Linux通用脚本---docker批量导入导出镜像

    在实际的运维工作中,总是免不了一些批量操作的事情,比如,批量添加用户,批量修改用户密码,批量创建文件夹,批量移动复制文件等等操作.如果都是手工操作的话,无疑是一个劳心费力的事情,因此,我们才需要编写脚 ...

  6. Docker容器的导出和导入

    2019独角兽企业重金招聘Python工程师标准>>> 1.容器导出 docker export deamon_logs > deamon_logs.tar 2.将容器作为镜像 ...

  7. docker 镜像 导入导出

    很喜欢玩docker,但最新遇到一个问题,公司给的新机器的dns有问题,导致pull不下来镜像. 没办法了,没有镜像什么神马都干不了,又不能花很多时间去搭建私有的镜像库,只有另寻办法了. 废话少说,经 ...

  8. docker images 导入导出

    134服务器中的ops镜像导出,再导入到133服务器中,运行并验证ok 导出镜像 如,在192.168.174.134服务器中导出ops.v1.tar.gz 镜像到本地文件,可以使用docker sa ...

  9. docker 镜像导入导出

    国内下载docker 非常缓慢,为了提高工作效率,需要保存一些常用镜像, docker images 查看镜像 docker save -O  msmsql -server-linux.tar [RE ...

最新文章

  1. leetcode-121-买卖股票的最佳时机
  2. mysql--------四种索引类型
  3. 2017.10.28 排序 思考记录
  4. 中国女足3:2逆转!支付宝:1300万奖金已到位 蒙牛奖励千万现金
  5. 猜数字游戏python程序用函数guesssecret_python实现猜数字游戏
  6. 【jQuery笔记Part1】02-jQuery代码风格
  7. windows命令_Windows自带强大的入侵检测工具——Netstat 命令 查询是否中木马
  8. Java通过代理服务器访问外部网络
  9. 使用Vibrator控制手机振动
  10. 量子化信息素蚁群优化特征选择算法
  11. pygame游戏库如何下载
  12. html显示等宽字体
  13. 网页设计 基础知识汇总
  14. SQLite attach detach 心得
  15. 文章引言--森林干扰--rse
  16. php wps导入数据库,wps excel表格怎么导入数据库-如何把excel表格导入wps
  17. 9款好看又实用的手机APP UI模板
  18. scratch-blocks教程(一)
  19. 创业者,守成者,陵夷者,中兴者,乱亡者。
  20. 智能优化算法——哈里鹰算法(Matlab实现)

热门文章

  1. C++ 有符号整数和无符号整数修饰符之间的差别
  2. ubuntu 安装 anaconda
  3. ubuntu 循环登录问题,
  4. GraphSAGE: Inductive Representation Learning on Large Graphs
  5. 阿里妈妈:基于动态背包的多场景广告序列投放算法
  6. 数据挖掘之关联算法Apriori
  7. 1 字节的 utf-8 序列的字节 1 无效_记住:永远不要在MySQL中使用UTF8
  8. Chrome浏览器查看SSL证书信息
  9. 读阿里亿级日活网关通道架构演进有感
  10. jodd-cache集锦