Docker镜像原理学习理解

Posted jks212454

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker镜像原理学习理解相关的知识,希望对你有一定的参考价值。

一、Docker镜像的组成

1.Docker镜像图层

在这里插入图片描述

2.union file system

docker通过联合文件系统,将docker的不同层级,整合为一个文件系统,为用户隐藏了多层的视角。

3.镜像层-bootfs

bootfs(boot-file system)——》 Linux内核:
bootfs主要包含bootloader和kernel,BootLoader主要作用引导宿主机内核。
作用:宿主机提供内核

4.镜像层-rootfs

rootfs(root-file system)——》发行版
rootfs就是不同的操作系统的发行版,例如suse,Ubuntu,centos等。
作用:docker获取基础镜像

5.镜像层-依赖环境

使用发行版提供的软件安装管理,例如yum install -y mysql
作用:依赖环境

6.容器层

可以写入的容器,想运行的代码程序。
作用:具体的程序运行
备注:只有容器层可以修改写入,其余层级为只读层。

二、docker镜像小结

在这里插入图片描述

1.当下载镜像,使用镜像启动容器时,docker会在该image的顶层,添加一个可读写的文件系统作为容器,然后运行该容器。
2.docker镜像的本质为unionFS管理的分层文件系统。
3.因为docker镜像共享宿主机内核,所以镜像文件一般很小。
4.dockerfile作用:自定义docker镜像的每一层作用

三、进入容器空间

[root@node1 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                                                 NAMES
2db168499262   redis     "docker-entrypoint.s…"   11 hours ago   Up 11 hours   6379/tcp, 0.0.0.0:8021->8021/tcp, :::8021->8021/tcp   cool_ganguly
2716e3ec1417   nginx     "/docker-entrypoint.…"   13 hours ago   Up 13 hours   0.0.0.0:80->80/tcp, :::80->80/tcp                     naughty_driscoll
[root@node1 ~]# docker exec -it 2716e3ec1417 bash
root@2716e3ec1417:/# cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

四、定义容器镜像

定义一个容器镜像步骤:
1.获取基础镜像,选择一个发行版平台(例如centos/ubuntu等)
2.例如在centos镜像中再进行安装redis软件。
3.导出镜像们,可以命名redis的镜像文件。
4.docker的层级概念:底层是centos镜像,上层是redis镜像,centos镜像属于父镜像。

五、容器层介绍

所有对容器的修改动作,都只会发生在容器里,只有容器层是是可写的,其余镜像层是只读的。
在这里插入图片描述

以上是关于Docker镜像原理学习理解的主要内容,如果未能解决你的问题,请参考以下文章

Docker——Docker 镜像原理

10张图带你深入理解Docker容器和镜像

10张图带你深入理解Docker容器和镜像

这10张图带你深入理解Docker容器和镜像

docker容器和镜像区别

docker容器和镜像区别