docker 工作原理:

  常用的命令docker run 、create 、start... 都是客户端命令

  Docker Daemon 接收到客户端传过来的命令以后 docker daemon会根据对应的命令进行下不易操作。

Docker镜像描述:

  Docker镜像含有启动容器所需的文件系统及其内容,因此其用于创建并启动docker容器

  采用分层构建机制,最底层为rootsfs.

    bootfs:用于系统引导的文件系统,包括bootloadere和knernel,容器创建完成后会被卸载,以便节约资源

    rootfs: 位于bootfs之上,表现为docker容器的根文件系统;

    传统模式中,系统启动之时,内核挂载rootfs时会首先将其挂载为只读模式,完整性自检完成后将其重新挂载为读写模式

    docker中,rootfs由内核挂载为只读模式,而后通过联合挂载额外挂载一个可写层

Docker镜像层:

  位于下层的镜像称为父镜像,最底层的称为基础镜像,最上层的为“可读写层”,其下均为可读层

  镜像层必须基于文件系统才能实现

Aufs (advanced multi-layered unificaton filesystem)  多层统一文件系统

  用于为Linux文件系统实现“联合挂载”

  aufs是之前的UnionFS的重新实现,2006年有Junjiro Okajima开发

  Dockere最初使用aufs作为容器文件系统层,它目前仍作为存储后端之一来支持

  aufs的竞争产品是oerlayfs, 后者自从自从3.18版本之后被合并到Linux

  docker 的分层镜像,除了aufs,docker,docker还支持btrfs,devicemapper和vfs等

    Ubuntu系统下,docker默认Ubuntu的aufs; 而在centos 7 上,用的是devicemapper

Docker Regitry

  启动容器时,docker daemon会试图从本地获取相关的镜像,本地镜像不存在时,其将从Register中下载该镜像并保存到本地。

  Registry用于保存docker镜像,包括镜像的层次结构和元数据

  用户可自建Registry,也可以使用官方Docker Hub

分类:

  Sponsor Registry: 第三方的registry 供客户和社区使用

  Mirror Registry: 第三方的registry, 只让客户使用

  Vendor Registry: 由发布Docker镜像的供应商提供的registry

  Private Registry: 通过设有防火墙和额外的安全层的私有实体提供

Registry(repository and index)

  repository

    由某个特定的docker镜像的所有迭代版本组成的镜像仓库

    一个Registry中可以存在多个Repository

      Repository可分为“顶级仓库”和“用户仓库”

    每个仓库可以包含多个Tag(标签),每个标签对应一个镜像

  Index

    维护用户账户、镜像的校验以及公共命名空间的信息

    相当于为Registry提供一个完成用户认证等功能的检索接口

  Docker Registry中的镜像通常啊由开发人员制作,而后推送公共或私有Registry上保存,供其他人员使用,例如“部署”到生产环境

镜像的生成途径

  Dockerfile

  基于容器制作

  Docker Hub automated builds

基于容器制作镜像

  docker commit  -p b1        此例子基于busybox来做的

    -p 是暂停的意思

    b1 是我的容器名

    (制作容器镜像的时候 容器不能停)

  docker tag 06b972fee176 wang/httpd:v0.1-1    给已有的镜像打标签

  docker tag wang/httpd:v0.1-1 wang/httpd:latest   再打标签

  docker commit -a "Ivy <wang163@.com>" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p t1 wang/httpd:v0.2      制作修改容器运行命令镜像

    -a  指定作者

    -c 指定要运行的命令

    -p 暂停正在运的容器

  docker push dajinjin/httpd  把镜像推到自己的hub仓库上   (docker login -u hub用户名)

镜像导出导入

打包镜像:

  docker save -o myimages.gz wang/httpd:v0.2 wang/httpd:v0.1-1    (将多个镜像打包成一个压缩文件)

镜像导入:

  docker load -i myimages.gz

docker第三篇 镜像管理基础的更多相关文章

  1. Docker镜像管理基础篇

    Docker镜像管理基础篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Images Docker镜像还有启动容器所需要的文件系统及其内容,因此,其用于创建并启 ...

  2. Docker 学习3 Docker镜像管理基础

    一.docker 常用操作及原理 1.docker 常用操作 2.docker 机制 1.docker client端是通过http或者https与server端通信的.个 2.docker 镜像可以 ...

  3. Docker镜像管理基础与基于容器的镜像制作示例

    一.Docker镜像 Docker镜像是启动Docker容器的一个非常重要的组件.Docker各组件之间的关系如图: Docker镜像含有启动容器所需要的文件系统及其内容,因此Docker镜像用于创建 ...

  4. 3、Docker镜像管理基础

    Docker image     # docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis -alpine 23d561d12e92 d ...

  5. 一张图比較 Docker 和 Git:镜像管理设计理念

    Docker 的镜像管理设计中大量借鉴了 Git 的理念. 以下这张图将对两者的核心概念和操作进行比較,有助于大家高速掌握管理 Docker 镜像的正确方式. watermark/2/text/aHR ...

  6. Docker笔记6:Docker 常见命令及镜像管理

    目  录 一.Docker 常用命令 docker version 命令 docker info 命令 二.Docker 镜像管理 搜索镜像:docker search 镜像名 获取镜像:docker ...

  7. 3.docker镜像管理基础

    一.docker镜像相关 1.About Docker Image Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器. 采用分层构建机制,最底层为bootf ...

  8. docker镜像管理基础

    [root@node01 ~]# docker pull quay.io/coreos/flannel:v0.10.0-amd64 v0.10.0-amd64: Pulling from coreos ...

  9. Docker 系列三(容器管理).

    一.运行容器 1.基于镜像新建一个容器并启动 : tomcat:8.0 -i:交互式操作 -t:终端 -rm:容器退出后随之将其删除,可以避免浪费空间 -p :端口映射 -d :容器在后台运行 指明了 ...

随机推荐

  1. LC 986. Interval List Intersections

    Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order ...

  2. django 2.2和mysql使用的常见问题

    可能是由于Django使用的MySQLdb库对Python3不支持,我们用采用了PyMySQL库来代替,导致出现各种坑,特别是执行以下2条命令的是时候: python manage.py makemi ...

  3. springboot之JWT实现权限认证

    1.在pom.xml添加依赖 <dependency> <groupId>com.auth0</groupId> <artifactId>java-jw ...

  4. 使用Eclipse对SpringBoot项目如何进行打包部署

    1,打包概要介绍: 自己做了个小demo,突然想练一下如何打包发布,期间出现了两个错误,第一个是加载不到主类,第二个是加载不到jsp文件,一会会把这两个问题一一陈述,以及解决方法. 1.1,先检查po ...

  5. MR21修改标准价

    转自:https://blog.csdn.net/qq_21813647/article/details/79195731 物料帐下只有物料的状态是初始状态才允许修改价格. 如果状态为已输入数量和值也 ...

  6. java.lang.IllegalStateException: No primary or default constructor found for class java.time.LocalDate

    转载自:https://blog.csdn.net/Coder_Arley/article/details/81910705 springboot中报错如下: springmvc也可以使用类似处理方法 ...

  7. iOS面试-关于性能优化

    目录 我要给出的建议将分为三个不同的等级: 入门级. 中级和进阶级: 入门级(这是些你一定会经常用在你app开发中的建议) 1. 用ARC管理内存2. 在正确的地方使用reuseIdentifier3 ...

  8. python基础----redis模块

    数据库 关系型数据 例如mysql,有表还有约束条件等 非关系型 k-v形式 memcache 存在内存中 redis 存在内存 mongodb 数据存在磁盘 import redis #string ...

  9. Java工程师学习指南第1部分:夯实Java基础系列

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 本文整理了微信公众号[Java技术江湖]发表和转载过的Java优质文章,想看到更多 ...

  10. java中如何在键盘中输入一串数字然后存入数组中?

    import java.util.Scanner; public class Tset { public static void main(String[] args) { System.out.pr ...