2.Docker镜像

Docker镜像

docker镜像是构建docker容器的基础,与常用的VM虚拟机做对比,如果使用VM启动一个操作系统,Dcoker镜像可以理解为此操作系统的ISO文件,即虚拟机运行的模板。

1.简介
  1. 描述:镜像=VM模板=类
  2. 组成:镜像=镜像层+镜像层(OS+文件+依赖包)
  3. 使用:Docker hub拉取—>本地Docker主机—>启动容器
2.镜像拉取
  1. 本地仓库:/var/lib/docker/<>
  2. 远程查找:docker search NAME
  3. 拉取镜像:docker image pull :(lastest不保证可以拉取最新镜像)
  4. 拉取全部:docker image pull -a
  5. 列出镜像:docker image ls
  6. 注意:将用户加入DOCKER UNIX组中
3.镜像命名和标签
  1. 两个不同标签可以指向相同镜像
  2. 悬虚镜像(dangling):在仓库中:存在,原因为构建新镜像,使用了已存在的表情
  3. 输出悬虚:docker image ls --filter dangling=true
  4. 删除悬虚:docker image prune
4.镜像过滤
  1. –filter

    commandusage
    dangling返回悬虚或非悬虚镜像
    before需要镜像名称/ID,返回之前被创建的全部镜像
    since返回指定镜像之后创建的全部镜像
    label根据标注的名称/值对镜像进行过滤
    reference过滤公式
  2. –format

    Go模板:”{{.size .rep .tag}}“

5.镜像分层
  1. 镜像由松耦合的只读镜像层构成

    1. 查看方法:(1)pull的时候的层次输出 (2)docker image inspect :
  2. 原理简述:

    1. 所有镜像都基于一个基础镜像层(比如一个系统)
    2. 进行修改或增加内容时,在当前镜像层之上建立新的镜像层
    3. 镜像始终保持是当前所有镜像层的组合
  3. 实现方式:通过快照方式

  4. 共享镜像层:镜像拉取时自动识别本地已经存在的镜像层进行共享,因此某一镜像层与镜像不是严格从属关系

  5. 创建镜像时镜像层的变化问题

    所有的Docker都基于基础镜像层,当进行修改或添加新内容时,就会在当前的镜像层之上创建新的镜像层。在添加额外镜像层的同时,镜像始终保持当前所有镜像层的集合。如下图所示,第三层更新文件5时,会对第二层的文件5进行覆盖,整体看了此镜像仍是具有5个文件。

在这里插入图片描述

6.镜像散列值
  1. 为什么用散列值(SHA):当更新某个已存在的镜像,为新镜像重新打标签,旧镜像成为悬虚镜像被覆盖,表现为<none:none>如果生产环境中已经部署了大量镜像,那么仅凭标签已经无法区分,需要使用散列值来区分新老镜像
  2. 查看方式:docker image ls -digests —> SHA签名值
  3. 精确拉取:docker image pull @sha256
  4. 镜像散列值(摘要)
    1. 背景:镜像(唯一标识为加密ID)=一个或多个镜像层(每个镜像层拥有自身加密ID)+实际存储数据+元数据(加密ID是SHA256串)
    2. 实质:镜像本身和镜像层都有内容hash值校验,保证了不可被篡改
  5. 其他作用:镜像上传至仓库需要压缩,对于压缩后散列值改变无法校验的情况,系统中也有一个压缩后的散列值变量,解决了这个问题
7.多架构
  1. 实现一个镜像支持多种架构
  2. 策略:Manifest列表和Manifest文件
  3. 根据架构选择镜像是Docker自己完成
8. 镜像删除
  1. 删除某个:docker image rm
  2. 删除全部:docker image rm ${docker image ls -q} -f
9.镜像的创建
镜像创建的三种方法
1. 从无到有,写Dockfile结合程序内容上下文进行创建
2. 用docker commit 通过运行/停止的容器创建,好处是可以在容器中运行时的改变代码,保存更改生成镜像
3.使用已存在的镜像进行创建,一种做法是在Dockerfile中FROM 已存在的镜像做基础层
10.相关命令
commandusage
docker image pull name:tag拉取镜像
docker image ls列出镜像
docker image inspect查看详细信息
docker image rm删除镜像,有容器依赖不可删除
docker image prune删除悬虚镜像
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值