为什么不用官方的镜像?

  不是不想使用,而是官方镜像提供的功能实在是太少了,不信的话,你pull一个ubuntu:latest的进行,你看有没有wget、curl、ssh这些功能,就连最简单的ifconfig都没有,可谓是最纯净、最精简的操作系统。但是我们平时工作中往往需要一些镜像能够拥有尽可能多的功能,当然这就可能造成镜像比较臃肿。

  本次测试过程使用的ubuntu16.04桌面版。没错,带GUI的桌面版,其实什么版并没有什么区别,转换为docker镜像之后,使用方法没有区别。

前提:iso已经在虚拟机中安装好

  操作很简单,就是耗时---就是进入虚拟机中,然后将某些目录的文件打成tar包,有了tar包之后,再使用docker的import命令来创建镜像。 

打包操作:

  iso镜像1.62G,打出的tar包5.6G,时间稍长,10分钟左右,大概是在虚拟机里面的原因。

  需要注意的是,在打包之前,请先确认要将哪些文件进行打包,比如下面这些目录都可以不用打包:

  1. 某些用户的家目录是否需要打包
  2. 每个用户的执行的历史命令是否需要清除
  3. 一些涉及到隐私的文件
  4. 与系统镜像没有关系的文件,或者说只是系统运行过程中保存的垃圾文件或者缓存等
  5. 临时文件

  建议手动选择要进行打包的目录,比如:bin dev  lib64 media opt root snap var boot etc lib mnt sbin srv usr vmlinuz这些目录

  如果你拿不准哪些文件目录要打包,那么可以将根目录下所有文件都打包(不推荐)

→ ~ #  cd /
→ ~ # tar -cf system.tar bin dev lib64 media opt root snap var boot etc lib mnt sbin srv usr vmlinuz

  建议打包时不要加-v选项,因为文件太多了,翻页速度太快,显示出来也看不清。

  将打出的包拷贝到一个安装了docker的环境,如果本地有docker的话,就可以不用移动。

  

导入操作

→ ~ #  cat image.tar | docker import - ubuntu:16:04
sha256:e2b87a8f4f31657f9781b6dad1bdf423f3f3e62865995f4720852c81be0c4e96

查看导入的镜像

→ ~ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 e2b87a8f4f31 29 minutes ago 4.97GB

  

运行新建的镜像

  这里可能会遇到一个问题,就是尝试运行docker镜像的时候,会提示错误docker: Error response from daemon: No command specified.

  即使是使用管理员权限来运行也是不行的,

→ ~ $ docker run -t -i ubuntu:16.04
docker: Error response from daemon: No command specified.
See 'docker run --help'.
→ ~ $ sudo docker run -t -i ubuntu:16.04
Password:
docker: Error response from daemon: No command specified.
See 'docker run --help'.

  正确方法:

→ ~ $ docker run -t -i ubuntu:16.04
docker: Error response from daemon: No command specified.
See 'docker run --help'.
→ ~ $ docker run -t -i ubuntu:16.04 /bin/bash #正确方法
root@f0389c5d3270:/# wget www.baidu.com

  至于docker run -t -i ubuntu:16.04为什么不行,可以参考:使用Dockerfile来构建镜像,因为他没有设定RUN命令的参数,即容器启动时,要运行的命令

推到镜像库

  最后,可以将镜像push到自己的镜像库,需要的时候就pull下来运行即可。

将iso镜像转换为docker镜像的更多相关文章

  1. Mycat 镜像-创建 Docker 镜像

    将 Mycat-server 创建到镜像,使其能够进行容器化部署,我们需要创建 Dockerfile 并在文件中安装其依赖项,使用 centos 做为 base 镜像,并安装 jdk 依赖即可,因此创 ...

  2. 第 3 章 镜像 - 021 - Docker 镜像小结

    镜像小结 镜像的常用操作子命令: images    显示镜像列表 history   显示镜像构建历史 commit    从容器创建新镜像 build     从 Dockerfile 构建镜像 ...

  3. 基于 debian:stretch-slim 系统镜像的 docker 镜像,安装 curl

    依次运行如下命令: apt-get update apt-get install curl

  4. Docker 镜像 && 容器的基本操作

    镜像 && 容器 docker 镜像好比操作系统的镜像(iso) docker 容器好比是已安装运行的操作系统 所以说 docker 镜像文件运行起来之后,就是我们所说的 docker ...

  5. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

  6. [P4基础]p4app的Docker镜像仓使用详解

    How to use the p4lang/p4app Docker image 本文参考 孙勇峰博客 和 p4app README 以及 p4app Dockerfile 结合自己的理解做一些记录, ...

  7. Docker学习笔记之从镜像仓库获得镜像

    0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...

  8. Docker镜像构建(五)

    Docker 镜像介绍 Docker镜像构建分为两种,一种是手动构建,另一种是Dockerfile(自动构建) 手动构建docker镜像 案例:我们基于centos镜像进行构建,制作自己的nginx镜 ...

  9. 04_Docker入门(下)之docker镜像和仓库的使用

    docker镜像和仓库 镜像介绍 docker镜像是由文件系统叠加而成的.最低端是一个引导文件系统,即bootfs.当一个容器启动后,它会将被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存以 ...

随机推荐

  1. C语言 汉诺塔问题

    //凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 汉诺塔是由三根杆子A,B,C组成的.A杆上有n个(n>1)穿孔圆盘,盘的尺寸由下到上依次变小.要求按 ...

  2. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

  3. 现在使用Nginx实现TCP反向代理

    Nginx 在1.9.0版本发布以前如果要想做到基于TCP的代理及负载均衡需要通过打名为 nginx_tcp_proxy_module 的第三方patch来实现,该模块的代码托管在github上网址: ...

  4. 快速排序 O(n logn) 堆排序 O(n logn) 归并排序 O(n logn)

    NB三人组 快速排序 思路" 取一个元素P (第一个元素), 使元素归位 列表被P 分成两部分,左边都比P小,右边比P大; 递归完成排序. 问题 如果是已经排序好的 倒叙 列表 则会 递归深 ...

  5. Linux系统高树攀登之路

    Linux系统高树攀登之路 Linux作为一种操作系统已经发展了这么长的时间,已然有了很多的“粉丝”,其中不乏有“通天之力”的Linux大牛,也有能在Linux世界里“快乐畅游”的强者,同时也有想要攀 ...

  6. 7.01-beautiful_soup3

    # pip install beautifulsoup4 from bs4 import BeautifulSoup html_doc = """ <html> ...

  7. [CQOI2018]解锁屏幕

    嘟嘟嘟 这题感觉真的很简单-- \(O(n ^ 2 logn)\)的做法特别好理解,但得开O2. 看数据范围,肯定是状压dp.但刚开始我没想通状压啥,因为点与点之间还有顺序问题.但后来发现这个顺序是子 ...

  8. Python:Day28 同步锁

    同步锁: Python不是有一把锁了吗?为什么还要加锁? Python解释器的GIL的作用是同一时刻只有一个线程被CPU执行,而同步锁的作用同一时刻只有一个线程对锁定代码块操作 如果不加锁,当多个线程 ...

  9. TextFormField数据处理

    重点:TextFormField这个Widget是由TextField封装而来,继承了TextField的特性:数据传递依靠:GlobalKey<FormState>(),Register ...

  10. 【转】DataTable与实体类互相转换

    原文地址:https://www.cnblogs.com/marblemm/p/7084797.html /// <summary> /// DataTable与实体类互相转换 /// & ...