Docker笔记 Dockerfile镜像原理以及制作镜像

Docker镜像是分层的文件系统,基于CentOS的镜像通过复用bootfs减少体积。Dockerfile用于构建自定义镜像,包括FROM、MAINTAINER、RUN等指令。文章提供了Dockerfile实例,展示如何创建一个包含特定软件的CentOS镜像。
摘要由CSDN通过智能技术生成

1. Docker 镜像原理

思考:

  • Docker镜像本质是什么?
    答:是一个分层的文件系统。
  • Docker中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个G?
    答:Centos的iso镜像包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层。
  • Docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70多MB?
    答:由于docker中镜像是分层的,tomcat虽然只有70多MB,但他需要依赖父镜像和基础镜像,所以整个对外暴露的tomcat镜像大小500MB。

首先要了解操作系统的组成部分当中,有个很重要的部分叫文件管理子系统
那么我们所用的docker是基于centos,或者说基于linux,所以在这里以linux的文件管理子系统做阐述

Linux文件系统由bootfsrootfs俩部分组成
在这里插入图片描述

  • bootfs:包含bootloader(引导加载程序)和kernel(内核)
  • rootfs:root文件系统,包含的就是典型linux系统中的/dev,/proc,/bin,/etc等标准目录和文件
  • 不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu,centos等

在了解了bootfs和rootfs之后,我们可以知道Docker镜像是由特殊的文件系统叠加而成

  • 如何叠加?
  1. 最低端是bootfs,并使用宿主机的bootfs,意思就是镜像使用的是宿主机的内核
  2. 第二层是root文件系统rootfs,称为base image
  3. 然后再往上可以叠加其他的镜像文件
  4. 统一文件系统技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统
  5. 一个镜像可以放在另一个镜像的上面,位于下面的镜像称为父镜像,最底部的镜像,成为基础镜像。

以tomcat镜像为例:
在这里插入图片描述
所以tomcat镜像为什么有500MB原因就是用户只看到了tomcat镜像,看不到具体的细节,在这个tomcat镜像的背后还隐藏着200多MB的JDK和rootfs基础镜像


2. Docker 镜像制作

1. 容器转为镜像

#容器转为镜像
docker commit 容器id 镜像名称:版本号

#将镜像转为压缩文件
docker save -o 压缩文件名称 镜像名称:版本号

#将压缩文件还原为镜像
docker load -i 压缩文件名称
<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

owensweat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值