zoukankan      html  css  js  c++  java
  • docker基础——2.镜像管理

    1. Docker镜像的主要特点

    (1) 采用分层构建机制。

    最底层为bootfs,用于系统引导的文件系统,包括bootloader和kernel,容器启动后会被卸载以节约资源。

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

    再其上叠加层,docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载(union mount)”技术额外挂载“可写”层。

    (2) 写时复制

    多个容器共享镜像,每个容器启动的时候并不需要单独复制一份镜像文件,而是将所有镜像层以只读的方式挂载到一个挂载点,再在上面覆盖一个可读写的容器层。

    当需要修改容器镜像内的某个文件时,只对处于最上方的读写层进行变动,不覆写下层已有文件系统的内容,已有文件在下层仍然存在,但会被读写层的新版文件所隐藏。

    (3) 内容寻址

    以内容校验哈希值作为镜像层的标识

    (4) 联合挂载

    可以在一个挂载点同时挂载多个文件系统,将原目录与新挂载内容进行整合。

    Ubuntu默认使用aufs,从3.18版开始overlayfs合并到内核。

    2. 关键概念

     (1) registry

    用以保存Docker镜像,其中还包括镜像层次结构和关于镜像的元数据。

    启动容器时,docker daemon会试图从本地获取相关镜像,本地不存在是,将从Registry下载该镜像。

    官方默认registry是DockerHub,也可以指定其他。

    (2) repository

    由具有某个功能的docker镜像的所有迭代版本构成的镜像组,不通版本的镜像用标签进行区分。比如ubuntu:14.04

    registry是repository的集合,repository是镜像的集合。

    (3) dockerfile

    dockerfile是通过docker build命令构建自己的docker镜像时需要使用到的定义文件。

    3. 镜像构建

    (1)基于容器制作镜像

    使用docker commit命令制作;
    使用docker tag加标签;
    docker inspect 容器名,查看容器信息

    (2)使用dockerfile构建镜像

    使用docker build命令

    4. 镜像持久化

    (1) docker export ; docker import

    用于持久化容器,会丢失所有历史

    (2) docker save ; docker load

    用于线下的方式持久化镜像,没有丢失历史和层

    (3) docker pull ; docker push

    用于线上的方式持久化镜像,没有丢失历史和层

  • 相关阅读:
    微软职位内部推荐-Senior Development Lead
    微软职位内部推荐-Senior Program Manager
    微软职位内部推荐-Senior PM
    微软职位内部推荐-Principal Software Eng Mgr
    微软职位内部推荐-Senior Software Engineer
    mysql性能优化-慢查询分析、优化索引和配置
    MySQL慢日志查询
    spark运行模式
    scala+hadoop+spark环境搭建
    MySQL Sleep进程
  • 原文地址:https://www.cnblogs.com/maxgongzuo/p/10374774.html
Copyright © 2011-2022 走看看