从0开始学docker(每日更新 24-11-1)

 进一步理解镜像

镜像(image)通常是指一系列文件或一个磁盘驱动器的精确副本。镜像文件其实和ZIP压缩包类似,是将特定的一系列文件按照一定的格式制作成单一的文件,方便用户下载和使用,例如一个测试版的操作系统、游戏等。

在云计算环境下,镜像就是一个虚拟机模板,它预先安装基本的操作系统和其他软件,创建虚拟机时首先需要准备一个镜像,然后启动一个或多个该镜像的实例,就创建好虚拟机了。

docker镜像是用于创建docker容器的只读模板,是按照docker要求定制的应用程序,就像软件安装包一样,一个docker镜像可以包括一个应用程序和能够运行它的基本操作系统环境,例如,一个web应用的镜像可以包括服务器软件和用户开发的web应用程序和能够运行它的操作系统环境

docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了运行时准备的一些配置参数。镜像不包含任何动态数据,其内容在构建之后也不会被改变

镜像是创建容器的基础,当运行容器时,如果本地不存在使用的镜像,docker就会自动从docker注册中心拉取

镜像的基本信息和标识

REPOSITORY:镜像仓库名

TAG:镜像标签

IMAGE ID:镜像id,是镜像的唯一标识,可以加上--no-trunc显示完整的镜像id

CREATED:镜像创建的时间

SIZE:镜像的大小

三种标识镜像的方法

1.镜像ID

2.镜像的名称:REPOSITORY : TAG

                        省略TAG,表示默认使用的最新版(latest)

3.镜像的摘要值:IMAGE[@DIGEST]

镜像描述文件Dockerfile

Dockerfile是一个文本文件,包含了要构建镜像的全部指令,docker通过读取文件中的指令自动构建镜像

父镜像与基础镜像

一个镜像的父镜像是指该镜像的Dockerfile文件中有FROM指定的镜像,所有后续的指令都应用到这个父镜像

基于没有提供FROM指令,或者FROM指令的参数为“scratch”(空白镜像)的Dockerfile所构建的镜像被称为基础镜像

docker官方提供的基础镜像通常是各种Linux发行版的镜像,这些镜像比传统的操作系统镜像文件或者虚拟机镜像文件小得多

镜像的分层结构

传统的分层结构

通过联合文件系统来实现,对于镜像A,用户可以访问file1~file4,第一层是基础镜像,通常是操作系统

优点:

便于修改:直接修改某层,不需要修改整个镜像

共享资源:有着相同环境的应用程序的镜像共享同一个底层镜像,不需要每个镜像都创建一个底层环境,内存也只需要加载同一个底层环境

问题:

会让镜像的层数越来越多,而联合文件系统所允许的层数有限

需要修改大文件时,以文件为粒度的“写时拷贝”需要复制整个大文件进行修改,会影响操作效率

基础镜像需要修改时维护工作量很大

镜像使用者无法对镜像进行审计

基于Dockerfile的镜像分层结构(推荐)

每一层由镜像的Dockerfile指令决定,除了最后一层,每层都是只读的

FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py

上面的Dockerfile包括四条命令,每个命令创建一个层

FROM指令:从创建一个源自Ubuntu15.04基础镜像层开始

COPY指令:从docker客户端当前目录添加一些文件

RUN指令:使用make命令构建应用程序

CMD指令:指定要在容器执行什么命令

拉取镜像时是每一层独立拉取的,保存在docker本地存储区域

docker操作命令 

被操作的镜像对象可以使用上文所述的三种标识镜像的方法

docker较新版本提供了一个统一的镜像操作命令

docker image COMMAND

如docker image pull对应docker pull,docker image rmi对于docker rmi

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值