base 镜像 - 每天5分钟玩转容器技术(10)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

上一节我们介绍了最小的 Docker 镜像本节讨论 base 镜像。

base 镜像有两层含义

  1. 不依赖其他镜像从 scratch 构建。

  2. 其他镜像可以之为基础进行扩展。

所以能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像比如 Ubuntu, Debian, CentOS 等。

我们以 CentOS 为例考察 base 镜像包含哪些内容。
下载镜像

docker pull centos

查看镜像信息

52.png

镜像大小不到 200MB。

等一下
一个 CentOS 才 200MB 
平时我们安装一个 CentOS 至少都有几个 GB怎么可能才 200MB !

相信这是几乎所有 Docker 初学者都会有的疑问包括我自己。下面我们来解释这个问题。

Linux 操作系统由内核空间和用户空间组成。如下图所示

rootfs

内核空间是 kernelLinux 刚启动时会加载 bootfs 文件系统之后 bootfs 会被卸载掉。

用户空间的文件系统是 rootfs包含我们熟悉的 /dev, /proc, /bin 等目录。

对于 base 镜像来说底层直接用 Host 的 kernel自己只需要提供 rootfs 就行了。

而对于一个精简的 OSrootfs 可以很小只需要包括最基本的命令、工具和程序库就可以了。相比其他 Linux 发行版CentOS 的 rootfs 已经算臃肿的了alpine 还不到 10MB。

我们平时安装的 CentOS 除了 rootfs 还会选装很多软件、服务、图形桌面等需要好几个 GB 就不足为奇了。

base 镜像提供的是最小安装的 Linux 发行版

下面是 CentOS 镜像的 Dockerfile 的内容

第二行 ADD 指令添加到镜像的 tar 包就是 CentOS 7 的 rootfs。在制作镜像时这个 tar 包会自动解压到 / 目录下生成 /dev, /porc, /bin 等目录。

注可在 Docker Hub 的镜像描述页面中查看 Dockerfile 。

支持运行多种 Linux OS

不同 Linux 发行版的区别主要就是 rootfs。

比如 Ubuntu 14.04 使用 upstart 管理服务apt 管理软件包而 CentOS 7 使用 systemd 和 yum。这些都是用户空间上的区别Linux kernel 差别不大。

所以 Docker 可以同时支持多种 Linux 镜像模拟出多种操作系统环境。

上图 Debian 和 BusyBox一种嵌入式 Linux上层提供各自的 rootfs底层共用 Docker Host 的 kernel。

这里需要说明的是

  1. base 镜像只是在用户空间与发行版一致kernel 版本与发型版是不同的。
    例如 CentOS 7 使用 3.x.x 的 kernel如果 Docker Host 是 Ubuntu 16.04比如我们的实验环境那么在 CentOS 容器中使用的实际是是 Host 4.x.x 的 kernel。 

    ① Host kernel 为 4.4.0-31
    ② 启动并进入 CentOS 容器
    ③ 验证容器是 CentOS 7
    ④ 容器的 kernel 版本与 Host 一致

  2. 容器只能使用 Host 的 kernel并且不能修改。
    所有容器都共用 host 的 kernel在容器中没办法对 kernel 升级。如果容器对 kernel 版本有要求比如应用只能在某个 kernel 版本下运行则不建议用容器这种场景虚拟机可能更合适。

下一节我们讨论镜像的分层结构。

二维码+指纹.png

本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/1921339

目录
打赏
0
0
0
0
344
分享
相关文章
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
182 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
2月前
|
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
81 5
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
110 14
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
94 4
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
140 3
荣获2024年AI Cloud Native典型案例,阿里云容器产品技术能力获认可
2024全球数字经济大会云·AI·计算创新发展大会,阿里云容器服务团队携手客户,荣获“2024年AI Cloud Native典型案例”。
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
250 15
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
317 78
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等