Docker之容器导出为镜像问题

目录
  • Docker容器导出为镜像
    • Docker镜像备份与迁移
  • 记录Docker容器转镜像
    • 1.默认镜像中安装wget
    • 2.导出容器再导入镜像
    • 3.执行新的镜像
  • 总结

Docker容器导出为镜像

Docker镜像备份与迁移

  • 1. 容器保存为镜像
  • 2. 镜像备份
  • 3. 镜像恢复与迁移

1. 容器保存为镜像

我们可以通过以下命令将容器保存为镜像

docker commit pinyougou_nginx mynginx
  • pinyougou_nginx是容器名称
  • mynginx是新的镜像名称

pinyougou_nginx容器已经成功保存为mynginx镜像,执行

docker images

查看镜像,是否操作成功

此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器

记录Docker容器转镜像

1.默认镜像中安装wget

Docker镜像可以通过Dockerfile构建出来,也可以通过现有容器生成新的镜像。这里记录一次基于centos镜像的修改版本的生成过程。

$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
tomcat        latest    b0e0b0a92cf9   6 weeks ago    680MB
nginx         latest    87a94228f133   8 weeks ago    133MB
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB
centos        latest    5d0da3dc9764   2 months ago   231MB
redis         latest    02c7f2054405   3 months ago   105MB
java          8         d23bdf5b1b1b   4 years ago    643MB

启动默认的centos镜像

$ docker run -it --name mycentos centos /bin/bash

发现在默认的镜像中没有wget命令

[root@b4c252cdd42a /]# wget
bash: wget: command not found

使用yum install在容器内安装wget命令

[root@b4c252cdd42a /]# yum install wget
......
Complete!

2.导出容器再导入镜像

如果每次新启动的容器都要重新安装wget很麻烦,所以导出容器再导入作为一个新的镜像。

查看容器,看到名称为mycentos

$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
b4c252cdd42a   centos    "/bin/bash"   14 minutes ago   Up 14 minutes             mycentos

导出这个容器,容器导出后会在当前目录中看到这个文件

$ docker export mycentos > mycentos_export.tar

将这个文件导入docker环境,会看到新的镜像。

$ docker import - mycentos-image < mycentos_export.tar 
sha256:c7d000aaf05fa8d5b26a94dd3fbe09bf62a0007cbed73eeedefe6119434c375d
$ docker images
REPOSITORY       TAG       IMAGE ID       CREATED         SIZE
mycentos-image   latest    c7d000aaf05f   8 seconds ago   259MB
tomcat           latest    b0e0b0a92cf9   6 weeks ago     680MB
nginx            latest    87a94228f133   8 weeks ago     133MB
hello-world      latest    feb5d9fea6a5   2 months ago    13.3kB
centos           latest    5d0da3dc9764   2 months ago    231MB
redis            latest    02c7f2054405   3 months ago    105MB
java             8         d23bdf5b1b1b   4 years ago     643MB

3.执行新的镜像

执行新的镜像,可以看到新的镜像已经包含了wget命令。

(base) wjx-mac-pro:~ wangjianxuan1$ docker run -it --name mycentos-cus mycentos-image /bin/bash
[root@3edd237aa0e5 /]# wget
wget: missing URL
Usage: wget [OPTION]... [URL]...

Try `wget --help' for more options.

为了方便,可以将这个镜像提交到docker库上,下次可以直接使用这个镜像就可以了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Docker镜像与容器的导入导出操作实践

    目录 一.前言 二.docker镜像的导入和导出 1.docker镜像的导出 2.docker镜像的导入 三.docker容器的导入和导出 1.docker容器的导出 2.docker容器的导入 四.总结 一.前言 随着容器技术的发展,现在很多的应用程序系统都会选择使用docker容器进行部署,但是有时候使用docker容器进行部署的时候会遇到问题,比如说我们的应用程序里面需要依赖其他第三方的镜像,如果这时候服务器是在内网不能连接外网的情况下,那么就无法部署了.基于这种情况,docker官方支持

  • Docker镜像的导入导出的实现方法

    本文介绍Docker镜像的导入导出,用于迁移.备份.升级等场景,准备环境如下: CentOS 7.0 Docker 1.18 导入导出命令介绍 涉及的命令有export.import.save.load save 命令 docker save [options] images [images...] 示例 docker save -o nginx.tar nginx:latest 或 docker save > nginx.tar nginx:latest 其中-o和>表示输出到文件,ngin

  • 使用Docker将容器打成镜像的方法步骤

    目录 前言 1. 容器打成镜像 过程示例 2. 镜像打包 前言 工作中遇到三方闭源的中间件运行起来某项特性不符合需求,但是镜像提供方偏偏又没有将配置文件挂载出来以供修改,这就导致要使软件符合需求地运行只能进入到容器内部修改配置文件后重启,可谓非常之蛋疼.笔者平时对 Docker 接触不多,好在有同事提到 Docker 支持将运行中的容器重新打包为镜像,于是网上搜索资料,大致整理出以下步骤解决上面的问题,故有本文聊作记录 进入运行中的容器修改其配置文件,修改完成后重启容器 将已经修改过配置文件的容

  • Docker之容器导出为镜像问题

    目录 Docker容器导出为镜像 Docker镜像备份与迁移 记录Docker容器转镜像 1.默认镜像中安装wget 2.导出容器再导入镜像 3.执行新的镜像 总结 Docker容器导出为镜像 Docker镜像备份与迁移 1. 容器保存为镜像 2. 镜像备份 3. 镜像恢复与迁移 1. 容器保存为镜像 我们可以通过以下命令将容器保存为镜像 docker commit pinyougou_nginx mynginx pinyougou_nginx是容器名称 mynginx是新的镜像名称 pinyo

  • 在 docker 之间导出导入镜像的方法

    很喜欢玩docker,但最新遇到一个问题,公司给的新机器的dns有问题,导致pull不下来镜像. 没办法了,没有镜像什么神马都干不了,又不能花很多时间去搭建私有的镜像库,只有另寻办法了. 废话少说,经过探究,发现 docker 提供把镜像导出export(保存save)为文件的机制,这样就可以把镜像copy到任意地方了. 1. 导出 export - 导入 import 格式:docker export CONTAINER(容器) 使用 docker ps -a 查看本机已有的容器,如: 我们使

  • Docker定制容器镜像的2种方法(推荐)

    一.需求 由于在测试环境中使用了docker官网的centos 镜像,但是该镜像里面默认没有安装ssh服务,在做测试时又需要开启ssh.所以上网也查了查资料.下面详细的纪录下.在centos 容器内安装ssh后,转成新的镜像用于后期测试使用. 二.镜像定制 第一种方式(手动修改容器镜像) 1.先下载centos镜像 [root@docker ~]# docker pull centos 2.启动容器并进行配置 启动容器, [root@docker ~]# docker run -it -d --

  • 详解Docker 容器基础系统镜像打包

    因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具.根据这个思路,我们就可以构建一个自己的容器基础系统镜像. 构建标准的 Linux rootfs 的方式有很多种方法,Redhat.Debian.SUSE等主流的发行版都有提供相应的工具支持. 大概的流程如下: 构建基础的 rootfs -> 配置基础系统参数 -> 部署用户自定义软件 -> 清理系统 -> 打包为容器镜像 -> 测试镜像 -> 发

  • Docker 教程之基本概念(镜像,容器,仓库)详解

    镜像 Docker 包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 理解了这三个概念,就理解了 Docker 的整个生命周期. Docker 镜像 Docker 镜像就是一个只读的模板. 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序. 镜像可以用来创建 Docker 容器. Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经

  • docker学习笔记之把容器commit成镜像的方法

    docker提供了两种镜像制作的方式,提高了使用的灵活性: 1.可以将更改后的容器提交,制作成镜像(这是接下来要说明的) 2.通过Dockerfile来制作镜像 下面通过一个例子来展示方法 本地有一个Ubuntu的镜像,下面以这个为蓝本,创建一个容器并在根目录下添加一个test文件,然后做成镜像. [root@bw001 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu latest a3cdd83cf

  • .NETCore Docker实现容器化与私有镜像仓库管理

    一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖.相较于虚拟机而言,Docker共享的是宿主机的硬件资源,使用容器来提供独立的运行环境来运行应用.虚拟机则是基于Supervisor(虚拟机管理程序)使用虚拟化技术来提供隔离的虚拟机,在虚拟机的操作系统上提供运行环境!虽然两者都提供了很好的资源隔离,但很明显Docker的虚拟化开销更低! Docker涉及了三个核心

  • 聊聊docker中容器与镜像的区别

    什么是镜像? 镜像可以看成是由多个镜像层叠加起来的一个文件系统(通过UnionFS与AUFS文件联合系统实现),镜像层也可以简单理解为一个基本的镜像,而每个镜像层之间通过指针的形式进行叠加. 什么是容器? 容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的.要点:容器 = 镜像 + 读写层,并且容器的定义并没有提及是否要运行容器. 今天抛开原理,抛开底层.通俗的讲解docker中容器与镜像的区别. 对于初学者来说,刚

  • Docker通过容器生成镜像提交DockerCommit详解

    目录 在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中. 根据镜像启动容器:docker run 根据启动的容器创建新的镜像:docker commit 将由容器生成的镜像push到镜像仓库docker hub push失败之后,需要根据镜像仓库的路径打tag,然后提交到镜像仓库: 在另一台服务器下载上图push到镜像仓库的新镜像 参考文章:通过容器提交镜像DockerCommit及推送镜像DockerPush 以上就是Docker通过容器生成镜像提

  • 导出与导入Docker的容器实现示例

    目录 Docker容器的导出 Docker容器的导入 本文主要讲解Docker容器的导入与导出,可以用作容器快照的备份. Docker容器的导出 1.首先使用命令查看已经创建的Docker容器 docker ps -a 这个时候可以看到container id也就是容器ID,我们只要根据容器ID就能导出相应的容器 2.导出某个容器 导出某个容器,非常简单,使用docker export命令,语法:docker export $container_id > 容器快照名 3.查看导出的容器 ls 4

随机推荐