docker images本地迁移的实现

最近在学习docker,经常遇到的一个问题是,在下载docker image的时候,由于众所周知的网络原因导致失败,虽然网上也有很多解决方案,比如使用Docker Hub Mirror 之类的国内镜像服务,不过由于个人原因(侥幸有一台国外的VM),我更倾向于不通过docker registry共享下载的image。

问题很明确:

不通过docker registry,将A机器上的docker image共享给其他机器,即docker镜像本地迁移。

方案也很简单:

使用docker的save 和 load命令, 具体步骤如下

1.在A机器上列出所有的docker image,并找到你要保存的image名

sudo docker images

2.在A机器上使用docker save命令,保存image为tar文件

sudo docker save image_name -o file_path

其中,image_name替换为第一步里找到的要保存的image名。file_path是导出的tar文件路径,比如/home/tmp/image1.tar

3.将导出的image tar文件传到其他机器,如机器B。可以使用各种方式,比如scp之类的,在这里不详述了。

4.在需要使用image的机器上(如B机器)使用docker load命令加载image tar文件

sudo docker load -i file_path 

注:另外,也可以使用docker 的export和import命令实现类似功能,关于export/save, import/load的区别,可以自己上网查,在此不做展开了。

基本区别就是export出来的是容器(无历史和层信息),而save出来的是image(具有完整的历史和层信息,支持层回滚)

补充:Docker的镜像的备份与迁移

第一步:

使用docker ps -a命令查看所有的容器

[root@localhost ~]# docker ps -a
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS      PORTS    NAMES
9505a10e6d29  nginx    "nginx -g 'daemon of…" 34 minutes ago  Exited (0) 8 minutes ago      mynginx
4c89fff9ac8c  mysql:5.6   "docker-entrypoint.s…" 11 days ago   Exited (0) 11 days ago       mymysql
0abefefe2592  centos    "/bin/bash"    2 months ago  Exited (255) 12 days ago      mycentos

第二步:

容器保存为对象,docker commit 容器名 要保存的名字

[root@localhost conf]# docker commit mynginx mynginx_backup
sha256:a6ca067596a2c319ddcdc9592afa9a7e9be4c157959c0327214d3e577333ed3a

第三步:

查看刚才保存的镜像

[root@localhost conf]# docker images
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE
mynginx_backup  latest    a6ca067596a2  19 seconds ago  109MB

第四步:

镜像备份(保存为tar文件),docker save -o 容器名.tar 要保存的名字

[root@localhost ~]# docker save -o mynginx.tar mynginx_backup

第五步:

查看当前目录

[root@localhost ~]# ls
anaconda-ks.cfg conf data initial-setup-ks.cfg java logs mynginx.tar original-ks.cfg

第六步:

删除原来的镜像并查看

[root@localhost ~]# docker rmi mynginx_backup
Untagged: mynginx_backup:latest
Deleted: sha256:a6ca067596a2c319ddcdc9592afa9a7e9be4c157959c0327214d3e577333ed3a
Deleted: sha256:facd3b28655186bdc7349bc017557ed80f94155831a8a3ed936f498e2f5b6b1c
[root@localhost ~]# docker images
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE

第七步:

镜像恢复,docker load -i 打包好的容器的文件名.tar

[root@localhost ~]# docker load -i mynginx.tar
ea4399e4dbe6: Loading layer [==================================================>] 6.656kB/6.656kB
Loaded image: mynginx_backup:latest
[root@localhost ~]# docker images
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE
mynginx_backup  latest    a6ca067596a2  7 minutes ago  109MB

第八步:

使用该镜像创建容器

[root@localhost ~]# docker run --name mynginx2 -p 80:80 -d mynginx_backup
a4809747f3c233d5a8f0c35542449adda10c06305f32c32a55e4842630212760

第九步:

浏览器输入ip地址,看是否成功

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 解决docker images 镜像消失的问题

    1.50,93存在镜像消失情况 [root@h50 /]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 24G 0 24G 0% /dev tmpfs 24G 0 24G 0% /dev/shm tmpfs 24G 428M 24G 2% /run tmpfs 24G 0 24G 0% /sys/fs/cgroup /dev/mapper/cl-root 50G 43G 8.0G 85% / root剩下85% overlay 50G 43G 8.0G 85% /v

  • Docker images导出和导入操作

    之前已配置好基础镜像,其他地方也需要用到这些镜像时怎么办呢? 答案:镜像的导入和导出功能. 1.镜像的保存 [root@wxtest1607 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat8 3.0 90457edaf6ff 6 hours ago 1.036 GB [root@wxtest1607 lixr]# docker save 9045 > tomcat8-apr.tar [root@wxtest1607 li

  • docker images 如何建立自己的原生镜像

    docker images 如何建立自己的原生镜像 制作image原生镜像需要使用febootstrap工具,需要注意的是,在centos7系列中,默认的源中不带此包,但是在centos6系列中,该包是默认可用使用的. 在centos6中安装febootstrap # yum install febootstrap -y 会安装相应的软件包:fakechroot-2.9-24.5.el6_1.1.x86_64.rpm . fakechroot-libs-2.9-24.5.el6_1.1.x86_

  • docker images,info,-d等命令报错的解决方法

    一.发现问题 楼主不管输入那个命令,都出现了: FATA[0000] Cannot connect to the Docker daemon. Is 'docker -d' running on this host? 二.解决方法 以及类似的错误,就连docker version命令都报错了,楼主开始找啊找,找到了好多东西,结果发现没一个能行的,最后楼主使用这样的命令: # vim /etc/default/docker 在该文件中添加如下内容: DOCKER_OPTS="-H unix:///

  • docker images本地迁移的实现

    最近在学习docker,经常遇到的一个问题是,在下载docker image的时候,由于众所周知的网络原因导致失败,虽然网上也有很多解决方案,比如使用Docker Hub Mirror 之类的国内镜像服务,不过由于个人原因(侥幸有一台国外的VM),我更倾向于不通过docker registry共享下载的image. 问题很明确: 不通过docker registry,将A机器上的docker image共享给其他机器,即docker镜像本地迁移. 方案也很简单: 使用docker的save 和

  • Docker镜像的迁移与备份及Dockerflie 使用方法详解

    目录 一.迁移与备份 1. 容器保存为镜像 2. 镜像备份 3. 镜像恢复与迁移 二.Dockerflie 1. 认识 Dockerfile 2. Dockerfile 常用命令 3. 使用 Dockerfile 构建镜像 一.迁移与备份 迁移和备份主要有三个操作命令将容器保存为镜像.备份镜像(将镜像导出为一个文件).镜像的迁移与恢复.迁移与备份在实际操作 Docker 的过程中使用的是非常多的,比如要将一台服务器的镜像迁移到另外一台服务器,就么可以先将镜像保存为一个文件,然后将文件拷贝至另一台

  • 详解Docker挂载本地目录及实现文件共享的方法

    docker挂载本地目录的方法总结: Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定. 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker run -it -v /test:/soft centos /bin/bash 这样在容器启动后,容器内会自动创建/soft的目录.通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录. 貌似简单,其

  • 使用 kind 和 Docker 启动本地的 Kubernetes环境

    介绍 你曾经花过一整天时间尝试入门Kubernetes吗?多亏最近新出现的一些工具,你可以不用再为此大费周章了. 这篇文章中,我将向你展示使用 kind 在单个 Docker 容器中启动一个集群的步骤. 什么是 kind 因为 kind 是 go 语言实现的,请确保安装了最新版本的 golang.根据开发者文档,推荐使用 go1.11.5 及以上版本.为了安装 kind,请运行这些命令(可能需要运行一段时间) kind(Kubernetes IN Docker) 是一个基于 docker 构建

  • docker 打包本地镜像,并到其他机器进行恢复操作

    1.使用docker images查看本机所有的镜像文件 2.docker save eb40dcf64078> /root/mydjango-save-1016.tar 将镜像保存为本地文件,其中eb40dcf64078为image id 3.将保存到本地的文件上传到不能pull的服务器上,网络是相通的我这里直接使用的是scp命令 4.使用load方法加载刚才上传的tar文件 docker load < /root/mydjango-save-1016.tar 5.在新的机器上再此使用doc

  • docker挂载本地目录和数据卷容器操作

    1.docker挂载本地目录 docker可以支持把一个宿主机上的目录挂载到镜像里. 交互模式运行 docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash 后台运行 docker run -d -v /home/dock/Downloads:/usr/Downloads --name ubuntu1 ubuntu64 通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径. 现在镜像内就

  • Docker配置本地镜像与容器的存储位置

    使用find命令找到大于指定大小的文件: find / -type f -size +10G 排除某个目录 find / -path "/media/xww" -type f -size +10G 修改Docker本地镜像与容器的存储位置的方法 方法一.软链接 默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root Dir" 解决这个问题,最直接的方

  • docker将本地镜像发布到阿里云的实现方法

    目录 创建仓库镜像 命名空间 镜像仓库 将镜像推送到仓库 查看自己的用户名 登录 推送 查询镜像 推送 查看 下载镜像 创建仓库镜像 进入阿里云开发者平台点击,进行登录,这里可以用支付宝等进行快捷登录 点击控制台,进入到控制台页面 鼠标移入菜单 选择容器镜像服务 选择个人实力 并进行创建 命名空间 需要设置密码等 点击命名空间 输入命名空间 镜像仓库 点击镜像仓库 填写相关信息 然后点击下一步 点击本地仓库并创建 就像git新建仓库一样,他会出现推送的信息, 或者点击仓库页面的管理,也会出现类似

  • Docker搭建本地私有仓库的详细步骤

    和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库.使用私有仓库有许多优点: 一.节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可: 二.提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用. 接下来我们就大致说一下如何在本地搭建私有仓库. 环境准备 环境:两个装有Docker的Ubuntu虚拟机 虚拟机一:192.168.112.132 用户开发机 虚拟

  • 利用Docker搭建本地https环境的完整步骤

    什么是 HTTPS 我们都知道 Web App 的运行都是建立在网络应用层 HTTP 协议的,HTTP 协议能够进行客户端和服务器之间的请求和返回.但是这个过程是明文传输的,当请求被抓包后传输内容很容易被篡改,这对用户的安全性来说是极其严重的威胁.PWA 应用出于安全性的考虑要求项目必须部署在 HTTPS 环境. 那么 HTTPS 是什么呢? HTTPS 是将 HTTP 置于 SSL/TLS 之上,其效果是加密 HTTP 流量( traffic ),包括请求的 URL.结果页面.cookies.

随机推荐