为什么不用官方的镜像?

  不是不想使用,而是官方镜像提供的功能实在是太少了,不信的话,你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. 【爬坑】远程连接 MySQL 失败

    问题描述 远程连接 MySQL 服务器失败 报以下错误 host 192.168.23.1 is not allowed to connect to mysql server 解决方案 在服务器端打开 ...

  2. Linux 系统出现电流音解决方案

    迫于Windows 系统最近的各种故障,今天脱坑换了openSUSE Linux ,在上网途中播放视频时偶尔会出现电流音,虽然影响不大,但是还是进行了一些排查. 通过观察电流音出现时的系统负载的波段, ...

  3. LeetCode算法题-Remove Duplicates from Sorted List

    这是悦乐书的第160次更新,第162篇原创 01 前情回顾 昨晚的爬楼梯算法题,有位朋友提了个思路,使用动态规划算法.介于篇幅问题,这里不细说动态规划算法,以后会在数据机构和算法的理论知识里细说. 昨 ...

  4. June 12. 2018 Week 24th. Tuesday

    Just be yourself because you are unique and you will shine. 每个人都是独一无二的,做好你自己,你也能够光芒四射. From What a G ...

  5. 【2018.05.05 C与C++基础】C++中的自动废料收集:概念与问题引入

    在阅读C++语言的设计与演化一书时,作者多次提到希望能设计出一个自动废料收集,然而出于种种考虑,始终未将自动废料收集纳入标准讨论中,而是由Coder自己考虑是否在程序中实现废料收集. 当然了,许多Ja ...

  6. February 17th, 2018 Week 7th Saturday

    The happiest part of a man's life is what he passes lying awake in bed in the morning. 人生一大乐事莫过去早上醒来 ...

  7. ztree插件异步加载 使用RESTEasy报错 Only resource methods using @FormParam will work as expected. Resource methods consuming the request body by other means will not work as expected.

    在使用ztree插件实现异步加载时遇到后台RESTEasy接收参数问题,查看后台报错: A servlet request to the URI http://localhost:8080/area/ ...

  8. 03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》

    爬虫介绍 引入 之前在授课过程中,好多同学都问过我这样的一个问题:为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的 ...

  9. Spring Boot 中文乱码问题解决方案汇总

    使用 Spring Boot 开发,对外开发接口供调用,传入参数中有中文,出现中文乱码,查了好多资料,总结解决方法如下: 第一步,约定传参编码格式 不管是使用httpclient,还是okhttp,都 ...

  10. https验证证书的三个级别

    一.无条件信任证书 1. func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge ...