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. 【BZOJ4008】[HNOI2015]亚瑟王 期望

    [BZOJ4008][HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最 ...

  2. 什么是Ajax?

    1. 什么是Ajax?Asynchronous JavaScript and XML(异步的Javascript和XML),它不是某种编程语言,而是一种在无需刷新整个网页的情况下能够更新部分网页的技术 ...

  3. 李洪强iOS经典面试题147-WebView与JS交互

    李洪强iOS经典面试题147-WebView与JS交互   WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...

  4. c++ 离散数学 群的相关判断及求解

    采用C/C++/其它语言编程,构造一个n阶群<G={a,b,c,…},*>,G的阶|G|满足:3<=|G|<=6 1.判断该群是否是循环群,若是,输出该群的某个生成元. 2.给 ...

  5. metasploit模块字典爆破tomcat

    祭出神器MSF 再用auxiliary/scanner/http/tomcat_mgr_login 这个辅助模块爆破下弱口令 这里就用模块自带的字典吧   然后简单配置下.RUN 需要自己定义字典的话 ...

  6. Strom的配置安装

    1.准备环境 1.1配置列表 配置项 版本信息 OS Red Hat   Enterprise Linux Server release 5.5 (Tikanga) IP 192.168.1.191/ ...

  7. websevice中runtime modeler error: Wrapper class com.ws.jaxws.Add is not found问题的解决办法

    查询了网上的资料,有以下解决办法: 1> 先用apt命令将主程序进行编译,然后生成一些java文件2> 升级JDK到版本jdk1.6u17或以后 这两种办法我没有试过,但是试了以下这种方法 ...

  8. Android课程---添加黑名单的练习2(课堂讲解)

    实现黑名单的添加.修改.查询和删除,首先得有封装的3个类,便于使用 BlackNumber.java package com.hanqi.test3; /** * Created by Adminis ...

  9. 本地测试SMTP服务器

    一年前看计算机网络里的电子邮件协议的时候,想自己建一个本地SMTP服务器,然后用telnet发送消息,后来是没找到.这次又翻看了一下,找了个Windows平台下的hMailServer,挺方便的.步骤 ...

  10. 动态设置AndroidManifest.xml文件中的meta-data

    当debug和release版本使用不同的值时,使用Gradle设置相应的值. Android主配置文件 <meta-data android:name="com.amap.api.v ...