Docker学习历程(三):Docker镜像详解

一.镜像的组成解析:

  1. 分层镜像:底层bootfs,上层rootfs;启动容器时,两层都以只读方式挂载

    • bootfs类型可以是btrfs、aufs、lxc,除此之外还需要一个内核,该内核仅用于启动容器中的用户控件
    • rootfs具体表现为一个根文件系统,包含基本的文件和目录
  2. 构建镜像的基本流程:
    1. 预备一个bootfs
    2. 安装最小系统
    3. 按需部署应用
  3. 镜像的读写机制:
    1. 镜像俱为只读属性
    2. 启动容器后在镜像基础上新增当前容器的专用层,该层可进行写入
    3. 容器被删除后,专用读写层会随之删除,所以容器默认无法实现数据的持久化

二.镜像仓库:在历程(一)里有提到过相关内容,补充内容主要是Registry的组成:

  1. repository:在一个registry中可以存在多个repository
  2. index:主要作用提供维护账户信息和检索端口

三.常见顶级仓库:

  1. 网易镜像仓库(需要登录认证):https://c.163yun.com/hub#/m/home/
  2. 阿里云镜像仓库(需要登录认证):https://cr.console.aliyun.com/cn-beijing/instances/images
  3. DaoCloud(道客网络):https://hub.daocloud.io/
  4. Docker Hub(官方仓库):https://hub.docker.com/
  5. Quay:https://quay.io/search

四.镜像制作方法:

  1. 基于已有容器进行镜像的制作

    • 在一个正在运行的容器中进行需求应用的构建
    • 使用docker commit 容器名  进行镜像的提交
      -a 指定镜像作者
      -c 更改镜像的启动命令,例如-c ‘CMD ["nginx","-g","daemon off"]‘
      -m 描述信息
      -p 提交镜像时暂停容器
    • 给制作的镜像指定标签
  2. 基于Dockerfile进行镜像制作
    • 另开章节进行记录
  3. 基于Docker Hub自动创建功能

五.使用Docker Hub进行镜仓库的构建

  1. 在Docker Hub注册账号后创建仓库(仓库名即为镜像上传的镜像名)
  2. 远程登录Docker Hub:docker login -u你的用户名
  3. 将本地镜像指定标签后上传 docker 用户名/仓库名:标签

六.使用阿里云容器镜像服务进行镜像仓库的构建

原文地址:https://www.cnblogs.com/intifi/p/12146946.html

时间: 2024-08-29 22:31:06

Docker学习历程(三):Docker镜像详解的相关文章

SpringMVC学习总结(三)——Controller接口详解(2)

4.5.ServletForwardingController 将接收到的请求转发到一个命名的servlet,具体示例如下: package cn.javass.chapter4.web.servlet; public class ForwardingServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Servle

DOCKER学习_012:Dockerfile配置指令详解

1 Dockerfile结构 基础镜像信息 镜像操作指令 容器启动时执行指令 2 FROM 指定基础镜像,用于继承其他镜像使用的 FROM ubuntu:14.06 FROM centos FROM nginx:latest 3 LABEL 镜像创建者的基本信息 4 ENV 定义Docker容器内的环境变量 ENV # 只能设置一个变量 ENV = … # 允许一次设置多个变量 ENV <key> <value> 指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持 示例:

zepto学习(三)之详解

zepto Zepto就是jQuery的移动端版本, 可以看做是一个轻量级的jQuery github地址: https://github.com/madrobby/zepto 官方地址: http://zeptojs.com/ 中文版地址: http://www.css88.com/doc/zeptojs_api/ 注意点: Zepto的设计目的是提供 jQuery 类似的API,但并不是100%覆盖 jQuery jQuery的底层是通过DOM来实现效果的, zepto.js 是用css3

Mybatis学习记录(三)--Mybatis配置文件详解

关于mybatis的配置文件,主要有两个,一个是SqlMapperConfig.xml文件一个是mapper.xml文件,分别对这两个进行深入全面学习. 一.SqlMapperConfig.xml文件 1.标签概况 在SqlMapperConfig.xml中主要有以下标签,其中环境集合environments和spring整合后废除不用.objectFactory和plugins不经常使用. properties(属性) settings(全局配置参数) typeAliases(类型别名) ty

SpringMVC学习总结(三)——Controller接口详解(1)

4.12.ParameterizableViewController 参数化视图控制器,不进行功能处理(即静态视图),根据参数的逻辑视图名直接选择需要展示的视图. <bean name="/parameterizableView" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <property name="viewName"

Struts2学习第三课 Struts2详解

接着上次的课程 这次我们看struts.xml 修改如下:这里是加上命名空间,默认的是不加,我们手动加上时就要在访问时加上命名空间. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts

php学习之道:WSDL详解(三)

通过声明方式定义绑定(binding)属性 如果你在服务中采用SOAP binding,你可以使用JAX-WS来指定一定数量的属性binding.这些属性指定对应你在WSDL中指定的属性.某些设置,比如参数类型,可以约束你实现的方法,这些设置也影响声明的效用. @SOAPBinding声明,定义在javax.jws.soap.SOAPBinding接口中.它提供发布时的SOAP Binding细节.如果@SOAPBinding没有被指定,则用缺省的doc/literal SOAPBinding.

Docker学习总结之Docker与Vagrant之间的特点比较

以下内容均出自Vagrant作者(Mitchell Hashimoto)与Docker作者(Solomon Hykes)在stackoverflow上面一个问题讨论.在这个问题中,双方阐述了vagrant和docker的特点和使用范围,对于深入理解vagrant和docker很有意义,因此笔者翻译出来,以供大家讨论学习. Mitchell作为vagrant的作者,其在DevOps的世界里面沉浸多年,接触了很多类似docker的虚拟化软件.他目前接触了很多使用vagrant和docker的场景,所

hadoop 学习笔记:mapreduce框架详解

hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我 学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能是我做技术研究的 思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习 hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不