1. Docker镜像和Docker容器: 
    Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader和kernel,系统启动先加载bootfs,加载完成内核起来后,bootfs被卸载,rootfs被挂载,并运行程序,rootfs可以是多种不同的发行版,比如Fedora,Ubuntu。
    Docker镜像有多层FS组成,最底层是bootfs,第二层是rootfs,更上面还有其他文件系统,Docker的文件系统是只读的,加载完rootfs后,Docker可以加载更多的上层只读文件系统,最终这些文件系统会被放到一起,从外面看,只有一个文件系统。这种文件系统是叠加的,彼此独立,Docker的这种文件系统被称为镜像。也就是说,Docker的镜像可以放在另一个镜像上面。并且镜像是只读的,要想对镜像数据操作,Docker容器必须先初始化一个可读写的文件系统,然后将下面的只读镜像加载到可读写文件系统,然后执行读写,而底层的只读镜像不会变,这就是“写时复制”。因此一个容器实际上就是Docker生成了一个读写层和其中的配置数据,加上底层的只读镜像组成的。容器可以修改,但是镜像不可修改。这样就可以保证,从同一个镜像中生成的容器各自独立,互不干扰。
 
2. Docker镜像标签:
    Docker镜像存放在Docker仓库中,一个Docker仓库可以存放很多个镜像,为了区别同一个仓库中的不同镜像,可以为不同的镜像打上不同的标签。比如为了区别Ubuntu仓库的不同镜像,就可以Ubuntu:14.04打上标签。用pull拉取的时候,也可以加上标签拉取,特别的,官方仓库拉取的时候,不加标签,默认为拉取最新的镜像,标签为latest。
 
3. Docker镜像的一些操作命令:
    docker images 列出本地存在的镜像;
    docker pull img_name:img_tag 从docker hub上拉名为img_name,标签为img_tag的镜像;
    docker search xxxx 从dockerhub上查找镜像;
 
4. 创建Docker镜像:
    一般很少从零构建镜像,都是从已经发布的镜像上构建新镜像。主要有两种方法,
    1. 使用docker commit命令
    2. 使用Dockerfile文件和docker build命令
介绍第一种(第一种最简单,但是官方更推荐第二种):
    先运行一个容器:
        dcoker start con_name
        docker attach con_name
    然后在容器中安装一个软件,安装一个vim
        apt-get install vim
  
  

   构建镜像一定要停止容器,退出容器,停止容器,构建这个镜像。使用docker stop con_name命令。
       然后可以使用docker commit构建容器,docker commit提交的是修改,用过git的一定不会陌生git commit。
         docker commit -a your_name -m message con_name username/reps:tag
       其中-a指定作者,-m指定提交信息,username是用户名,reps是仓库名,tag是标签。如图:
  
   第一个就是刚刚创建的镜像。
       接下来就可以使用docker run命令,用刚刚创建的镜像创建并启动一个新的容器了
  
    再用docker ps -a查看一下,第一个容器是刚刚创建的容器,用的是刚刚构建的镜像。
  

Docker镜像的管理和创建的更多相关文章

  1. 2. docker 容器的管理(创建、查看、启动、终止、删除)

    一.创建 docker create:创建容器,处于停止状态. centos:latest:centos容器:最新版本(也可以指定具体的版本号). 本地有就使用本地镜像,没有则从远程镜像库拉取. 创建 ...

  2. 根据Dockerfile创建hello docker镜像

    一.编写hello可执行c文件: 1.安装:gcc glibc glibc-static yum install -y gcc glibc glibc-static 2.编写hello.c:vim h ...

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

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

  4. Docker 镜像之存储管理

    笔者在<Docker 镜像之进阶篇>中介绍了镜像分层.写时复制以及内容寻址存储(content-addressable storage)等技术特性,为了支持这些特性,docker 设计了一 ...

  5. paas架构之docker——镜像管理

    1. 镜像管理 1.1. 列出镜像 Sudo docker images 1.2. 查看镜像 Sudo docker images xxxx 1.3. 拉取镜像 Sudo docker pull ub ...

  6. Docker镜像的创建、存出、载入

    创建镜像的方法有三种:基于已有镜像的容器创建.基于本地模板导入.基于Dockerfile创建,本博文讲解前两种. 基于已有镜像的容器创建 该方法是使用docker commit命令,其命令格式为:   ...

  7. Docker镜像管理

    镜像是docker的三大核心概念之一.可以用来创建容器. Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统被称为UnionFS.镜像可以基于Dockerfile构建,Dockerf ...

  8. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  9. 004.Docker镜像管理

    一 镜像基本操作 镜像是一个包含程序运行必要依赖环境和代码的只读文件,其本质是磁盘上一系列文件的集合.它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上.镜像是容器运行的基石. 1 ...

随机推荐

  1. PK淘宝BUY+,京东推出AR购物应用JD Dream

        今年双十一淘宝推出了虚拟现实VR购物"BUY+",用户可以在虚拟环境中选购商品.那作为竞争对手的京东将使出什么绝招呢?在近日上海举办的谷歌开发者大会上得到了答案.会上京东推 ...

  2. BZOJ1024&丝帛搜索

    题意: 还想二分的,发现并不用...那么直接搜索就水过吧... /*================================================================= ...

  3. android Context 持有导致的内存泄漏

    Context使用场景 为了防止Activity,Service等这样的Context泄漏于一些生命周期更长的对象,可以使用生命周期更长的ApplicationContext,但是不是所有的Conte ...

  4. 关于 error: Operation is not valid due to the current state of the object。

    今天碰到一个特别的异常. Operation is not valid due to the current state of the object. at System.Web.HttpValueC ...

  5. 如何记录搜索引擎爬行记录php版

    写博客也有一段时间了,为什么搜索引擎迟迟不收录你的页面呢?想知道每天都有哪些蜘蛛“拜访”你的网站吗?作为一名网站长,有必要知道每天都有哪些蜘蛛爬行过你的网站,以便于了解各搜索引擎蜘蛛爬行频率,对网站进 ...

  6. bzoj4511:[Usaco2016 Jan]Subsequences Summing to Sevens

    题目大意:给个序列,求最长的连续子序列使其为7的倍数 又是一道令人欢喜的不用怎么用脑的水题.. 边读入,边计算前缀和 分别保存前缀和%7结果为1,2,3,4,5,6的第一次的位置 然后减一减就知道长度 ...

  7. Html简单介绍

    一.Html 1.万维网的核心语言,高大上称之为超文本标记语言(Html)的第五次修改 2.完成的时间:2014年10月29日 3.我们需要了解有一定高度的知识: WHATWG  WEB超文本应用技术 ...

  8. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-3 底层驱动之LED_蜂鸣器

    视频简介: 该视频介绍iCore3应用开发平台出厂源代码中GPIO的配置方法 及如何点亮LED和驱动蜂鸣器发声. 源视频包下载地址: http://pan.baidu.com/s/1nvpYMff   ...

  9. AutoIt操作Windows GUI实现文件上传

    AutoIt 一个使用类似BASIC脚本语言的免费软件,用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务. 官方网站: htt ...

  10. completionService

    我们现在在Java中使用多线程通常不会直接用Thread对象了,而是会用到java.util.concurrent包下的ExecutorService类来初始化一个线程池供我们使用. 当我们使用Exe ...