主要基于[cloudman]公众号的相关文章整理,主要用于个人学习与笔记记录,无任何商用目的,侵删

运行并研究hello-world镜像

拉取、查看、运行镜像

  • docker pull 从 Docker Hub 下载它
  • docker images hello-world 查看镜像的信息
  • docker run 运行

镜像中包含的内容

Dockerfile

镜像的描述文件,定义了如何构建 Docker 镜像。
Dockerfile 的语法简洁且可读性强,后面文章中会专门讨论如何编写 Dockerfile。

hello-world 的 Dockerfile 内容如下:
初识容器--镜像的内部结构
这三条指令:

  1. FROM scratch:此镜像是从白手起家,从 0 开始构建。
  2. COPY hello /:将文件“hello”复制到镜像的根目录。
  3. CMD ["/hello"]:容器启动时,执行 /hello

其中的第2点,镜像 hello-world 中就只有一个可执行文件 “hello”,其功能就是打印出 “Hello from Docker …” 等信息
/hello 就是文件系统的全部内容,连最基本的 /bin,/usr, /lib, /dev 都没有
这种镜像没有实际用途,主要操作的对象是具有基本操作系统的镜像,这种包含基本操作系统,可以由用户安装和配置软件的镜像,是主要的研究对象Base镜像

Base镜像

base镜像的两层含义

  • 不依赖其他镜像,从 scratch 构建。
  • 其他镜像可以之为基础进行扩展

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

基础Base镜像

下面研究研究CentOS的镜像
docker pull centos 获取一个CentOS的镜像
查看镜像信息
初识容器--镜像的内部结构
一个CentOS的镜像不到200MB,解释下这么小的原因:

  • Linux 操作系统由内核空间和用户空间组成
    初识容器--镜像的内部结构
    其中,内核空间是 kernel,Linux 刚启动时会加载 bootfs 文件系统,之后 bootfs 会被卸载掉。
    用户空间的文件系统是 rootfs,包含我们熟悉的 /dev, /proc, /bin 等目录。
    对于Docker的 base 镜像来说,底层直接用 Host 的 kernel,自己只需要提供 rootfs 就行了。
    而对于一个精简的 OS,rootfs 可以很小,只需要包括最基本的命令、工具和程序库就可以了。
    所以,base 镜像提供的是最小安装的 Linux 发行版
    下面是 CentOS 镜像的 Dockerfile 的内容:初识容器--镜像的内部结构
    第二行 ADD 指令添加到镜像的 tar 包就是 CentOS 7 的 rootfs。在制作镜像时,这个 tar 包会自动解压到 / 目录下,生成 /dev, /porc, /bin 等目录。

    注:可在 Docker Hub 的镜像描述页面中查看 Dockerfile
    具体如何看到dockerfile,后文中详细说

不同的Base镜像

不同的Base镜像,区别在于,支持运行不同的 Linux OS,就是其中rootfs不同
比如 Ubuntu 14.04 使用 upstart 管理服务,apt 管理软件包;而 CentOS 7 使用 systemd 和 yum。这些都是用户空间上的区别,Linux kernel 差别不大
所以 Docker 可以同时支持多种 Linux 镜像,模拟出多种操作系统环境。Debian 和 BusyBox(一种嵌入式 Linux)上层提供各自的 rootfs,底层共用 Docker Host 的 kernel。
初识容器--镜像的内部结构
需要说明的是:

  1. base 镜像只是在用户空间与发行版一致,kernel 版本与发型版是不同的:发行版是Docker中系统的版本,而kernel版本是宿主机的内核版本,二者不一定相同
  2. 容器只能使用 Host 的 kernel,并且不能修改。如果容器中的应用对内核版本有要求,则使用Docker可能受限

相关文章:

  • 2021-11-11
  • 2021-08-27
  • 2021-12-21
  • 2021-10-12
  • 2021-04-16
  • 2021-09-23
猜你喜欢
  • 2022-01-06
  • 2022-01-26
  • 2021-08-08
  • 2021-09-11
  • 2022-12-23
  • 2021-09-28
相关资源
相似解决方案