从 rootfs 压缩包导入

格式:docker import [选项] <文件>||- [<仓库名>[:<标签>]]

压缩包可以是本地文件、远程 Web 文件,甚至是从标准输入中得到。压缩包将会在镜像 / 目录展开,并直接作为镜像第一层提交。

比如我们想要创建一个 OpenVZ 的 centos7 模板的镜像:

访问连接:http://download.openvz.org/template/precreated/

由于文件比较大,我直接用迅雷下载了

将文件用xftp上传到/root目录

导入镜像

# docker import centos-7-x86_64-minimal.tar.gz  openvz/centos7
sha256:dc0fbd3e8b30b73c6556e6392b74f4d168e283dc80bd5a367e342a030e814b12

这条命令将 tar.gz文件作为根文件系统展开导入,并保存为镜像 openvz/centos7

导入成功后,我们可以用 docker image ls 看到这个导入的镜像:

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
openvz/centos7      latest              dc0fbd3e8b30        13 seconds ago      434.5 MB

Docker 还提供了 docker load 和 docker save 命令,用以将镜像保存为一个 tar 文件,然后传输到另一个位置上,再加载进来。这是在没有 Docker Registry 时的做法,现在已经不推荐,镜像迁移应该直接使用 Docker Registry,无论是直接使用 Docker Hub 还是使用内网私有 Registry 都可以。

用镜像启动一个容器看看

[root@localhost ~]# docker run -it --name test-centos7 openvz/centos7 /bin/bash
[root@252022847ea0 /]# ifconfig
bash: ifconfig: command not found

mini版的centos7是没有ifconfig命令的,可以使用yum whatprovides命令来查找对应的包

[root@252022847ea0 /]# yum whatprovides ifconfig
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo        : base
Matched from:
Filename    : /sbin/ifconfig

上面提示的信息,表示这个命令是属于net-tools软件包的

# yum -y install net-tools

使用ifconfig就可以查看IP地址了

[root@252022847ea0 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 0.0.0.0inet6 fe80::42:acff:fe11:2  prefixlen 64  scopeid 0x20<link>ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 3486  bytes 23040096 (21.9 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3244  bytes 179432 (175.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

当然了,还可以安装一些基本命令

# yum -y install vim wget nscd telnet
# yum clean all

使用exit命令退出

[root@252022847ea0 /]# exit
exit
[root@localhost ~]#

查看docker 运行进程

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
252022847ea0        openvz/centos7      "/bin/bash"         7 minutes ago       Exited (0) 10 seconds ago                test-centos7

提交(commit)修改并保存这个容器成为一个new_centos7镜像

[root@localhost ~]# docker commit 252022847ea0 new_centos7
sha256:ee7737270cc787e2669379f2e15a4621f429e506454cd906c032303951cf4245

将new_centos7的tar.gz文件保存在/opt目录下,查看大小

root@localhost ~]# docker save new_centos7 > /opt/new_centos7.tar.gz
[root@localhost ~]# ll /opt/new_centos7.tar.gz
-rw-r--r-- 1 root root 633089024 1月   5 22:03 /opt/new_centos7.tar.gz
[root@localhost ~]# du -sh /opt/new_centos7.tar.gz
604M    /opt/new_centos7.tar.gz

导入tar.gz包到本地docker镜像

[root@localhost ~]# docker load < /opt/new_centos7.tar.gz
Loaded image: new_centos7:latest

查看本地镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
new_centos7         latest              ee7737270cc7        3 minutes ago       619 MB
openvz/centos7      latest              dc0fbd3e8b30        13 minutes ago      434.5 MB

使用导入的镜像,启动一个容器,并查看IP地址

[root@localhost ~]# docker run -it --name base_centos7 new_centos7 /bin/bash
[root@d407b7faa878 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 0.0.0.0inet6 fe80::42:acff:fe11:2  prefixlen 64  scopeid 0x20<link>ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 6  bytes 508 (508.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6  bytes 508 (508.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

发现没有报错了,说明刚才安装的软件还在

docker制作镜像相关推荐

  1. docker制作镜像篇(基于容器)

    docker制作镜像可以有两种方式: 一.基于容器(使用busybox制作http镜像) 1.首先运行一个容器 2.在容器当中配置自己的http,添加web目录,增加主页文件等. 3.查看原busyb ...

  2. Docker 制作镜像

    docker镜像制作的两种方法: 1,基于docker commit 制作镜像 2,基于dockerfile制作镜像,为主流镜像制作方式. [基于基础镜像定制后,使用commit制作自定义镜像] 1, ...

  3. Docker制作镜像(四)

    Docker制作镜像(四) 众所周知,docker的镜像是有分层机制的,比如当你下载一个镜像时,你常常会看到以下画面 你发现pull complete了许多,这些全是文件的分层. 这样有什么优势呐? ...

  4. Docker 制作镜像的方式

    其它制作镜像的方式 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 除了标准的使用 Dockerfile 生成镜像的方法外,由于各种特殊需求和历史原 ...

  5. Docker制作镜像、启动容器、查看版本、修改源、安装工具

    1.制作镜像所需文件 比如想在容器中瞎捣腾python,那就需要制作一个python的镜像,当然,也可以pull别人的,这里当然选择自己make了 需要在宿主机,就是本机,创建一个目录,用来放制作镜像 ...

  6. 使用Docker制作镜像并推送到镜像仓库

    本文会告诉你如何使用docker从远端下载一个镜像,然后对镜像做修改,最后再把镜像推送到你自己的镜像仓库 1.安装Docker 这个没啥说的,根据你自己的环境下载对应的安装包安装就是了 docker官 ...

  7. docker 制作镜像并push至私有仓库

    1.制作镜像 在Dockerfile中配置好FROM和RUN 2.制作镜像 docker build -t image-myself . -f dockerfile_registry 3.打标签 do ...

  8. docker 制作镜像并发布到阿里云公有仓库

    大致操作步骤如下: 1.首先在阿里云创建镜像仓库 2.然后再本地制作镜像文件 3.把本地镜像文件推送到阿里云镜像仓库 4.其他云服务器进行阿里云镜像仓库拉取 5.启动容器 阿里云登录 - 欢迎登录阿里 ...

  9. 【Docker制作镜像】Linux制作以python为基础镜像,融合Flask框架和Redis数据库

    步骤 1.编辑Dockerfile 2.编辑requirements.txt文件 3.编辑app.py文件 4.生成镜像文件 5.使用镜像,启动容器 6.访问容器的web服务 7.启动redis容器 ...

  10. docker制作镜像的方法

    docker镜像简介 docker镜像是分层的,有底层网上叠加下载. dockerfille是以文本的方式生成镜像,他的好处在于生成镜像后可以查看生成流程.相对于docker commit,使它更加的 ...

最新文章

  1. 看博客学学Android(十三)
  2. 关于tableview的优化
  3. wxWidgets:图像面板image panel
  4. 浅谈:稀疏数组与二维数组之间的转换
  5. huffman算法c语言实验报告,huffman二叉树实验报告--数据结构(c语言).doc
  6. com.android.backupconfirm,终于去掉beta俱乐部了
  7. 用jQuery的ajax的功能实现输入自动提示的功能
  8. linux 服务器网络有关的内核参数
  9. getBoundingClientRect()来获取页面元素的位置”
  10. python面试题汇总_【Python环境】Python面试题汇总(一)
  11. 最新Latex安装详细教程
  12. AdventureWorks范例数据库
  13. 【Windows】PPT播放视频提示媒体不可用的解决方法
  14. 屏幕上1像素代表的实际距离是多少?
  15. 新的服务器装系统前怎么分区吗,新硬盘使用之前要如何分区?硬盘分区常用方法详解...
  16. 图片合成器,一键将目录中多个文件夹的图片转换为PDF
  17. LTE下行传输机制--PBCH
  18. C++函数参数省略号
  19. 苹果手机如何切换沙盒账号登录
  20. 1688-seller_info - 获得店铺详情

热门文章

  1. Makefile自动搜所目录及子目录下的的所有文件、自动生成编译目录
  2. Ctrl+shift+k会调出搜狗输入法软键盘,与VSCode行删除快捷键冲突
  3. Jordan CP3 11 Performance Reviews
  4. grafana对接zabbix
  5. VS2019 配色_NBA球员上脚:基德穿AJ13湖人配色,莫兰特的保罗乔治4代
  6. Comparable Comparator
  7. 【愚公系列】2021年12月 Redis数据库-主从的搭建
  8. linux安装部署Hive详细教程
  9. jquery选择器空格与大于号、加号与波浪号的区别
  10. SpringBoot 封装返回类报错:No converter found for return value of type