docker构建镜像与容器的深入理解

阅读: 评论:0

docker构建镜像与容器的深入理解

docker构建镜像与容器的深入理解

docker笔记

记录在使用docker过程中产生的一些思考和问题。

其他资料:

  • 基础
  • 原理
  • 指令doc
  • 实例解析

关于dockerfile构建镜像的过程

在原理里已经提到过镜像是一层层只读层构成的,上层由下层构建,并指向下层。这点在使用Dockerfile的build过程中也可以看出,每一层都有其ID。也可以透过history命令看出。其中最上层就作为库有着自己的名字和tag,当然镜像ID也是有的,这可以通过docker images查看。

由于Docker的镜像是分层(Diff层)构建的,因此每一层都有缓存下来,以ID作为该层的标识符。这些分层的镜像是能够在其上构建出其他镜像的,或者说是可被视作cache来利用的,下面可以简单的验证一下,写一个Dockerfile,然后构建:

FROM python:latestENV PYTHONUNBUFFERED 0

构建过程:

kimono@kimono:~/dockerTest$ docker build -t casual .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM python:latest---> 2c31ca135cf9
Step 2/2 : ENV PYTHONUNBUFFERED 0---> Running in 266e3b4554f3
Removing intermediate container 266e3b4554f3---> 20fdcb77c85c
Successfully built 20fdcb77c85c
Successfully tagged casual:latest

当然之前就已经pull了python:latest,因此这里的第一步是直接引用相应镜像的,第二步会根据这个镜像创建一个容器执行相应的操作,然后再将这个中间容器提交成为更上一层的镜像,并将中间容器移除,这与「原理」一致,即docker build本质上是docker rundocker commit的交叉动作。

接下来将Dockerfile更进一步试试:

FROM python:latestENV PYTHONUNBUFFERED 0
RUN mkdir -p /home/coredumped

构建过程:

kimono@kimono:~/dockerTest$ docker build -t casual1 .
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM python:latest---> 2c31ca135cf9
Step 2/3 : ENV PYTHONUNBUFFERED 0---> Using cache---> 20fdcb77c85c
Step 3/3 : RUN mkdir -p /home/coredumped---> Running in 0c3c5a0905cb
Removing intermediate container 0c3c5a0905cb---> 80420152d333
Successfully built 80420152d333
Successfully tagged casual1:latest

可以看出第二步的构建是引用的上层镜像,相当于前两步都“跳过”了。继续构建一个casual2:

kimono@kimono:~/dockerTest$ docker build -t casual2 .
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM python:latest---> 2c31ca135cf9
Step 2/3 : ENV PYTHONUNBUFFERED 0---> Using cache---> 20fdcb77c85c
Step 3/3 : RU

本文发布于:2024-01-27 12:09:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063285471320.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:镜像   容器   docker
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23