03.Docker 进阶
03.Docker 进阶
Docker 镜像原理
基础
Docker 镜像本质是什么?
- Docker 中一个 centos 镜像为什么只有 200MB,而一个 centos 操作系统的 iso 文件要几个 G?
- Docker 中一个 tomcat 镜像为什么有 600MB,而一个 tomcat 安装包只有 70 多 MB?
操作系统组成部分:
- 进程调度子系统
- 进程通信子系统
- 内存管理子系统
- 设备管理子系统
- 文件管理子系统
- 网络通信子系统
- 作业控制子系统
Linux 文件系统由 bootfs 和 rootfs 两部分组成
- bootfs:包含 bootloader(引导加载程序)和 kernel(内核)
- rootfs: root 文件系统,包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc 等标准目录和文件
- 不同的 linux 发行版,bootfs 基本一样,而 rootfs 不同,如 ubuntu,centos 等
Docker 镜像原理
Docker 镜像是由特殊的文件系统叠加而成,
- 最底端是 bootfs,并使用宿主机的 bootfs
- 第二层是 root 文件系统 rootfs,称为 base image
- 然后再往上可以叠加其他的镜像文件
统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。当从一个镜像启动容器时,Docker 会在最顶层加载一个读写文件系统作为容器
回答问题
- Docker 镜像本质是什么?
是一个分层文件系统
- Docker 中一个 centos 镜像为什么只有 200MB,而一个 centos 操作系统的 iso 文件要几个个 G?
Centos 的 iso 镜像文件包含 bootfs 和 rootfs,而 docker 的 centos 镜像复用操作系统的 bootfs,只有 rootfs 和其
他镜像层
- Docker 中一个 tomcat 镜像为什么有 600MB,而一个 tomcat 安装包只有 70 多 MB?
由于 docker 中镜像是分层的,tomcat 虽然只有 70 多 MB,但他需要依赖于父镜像和基础镜像,所有整个对外
暴露的 tomcat 镜像大小 600 多 MB
Docker 私有仓库
Docker 官方的 Docker hub:https://hub.docker.com
取镜像 到本地,也可以把我们自己的镜像推送上去。但是,有时候我们不希望将自己的镜 像放到公网当中,
那么这时我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
私有仓库搭建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1、拉取私有仓库镜像
docker pull registry
# 2、启动私有仓库容器
docker run -id --name=registry -p 5000:5000 registry
# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功
# 4、修改daemon.json
vim /etc/docker/daemon.json
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
{"insecure-registries":["私有仓库服务器ip:5000"]}
{"insecure-registries":["192.168.220.12:5000"]}
# 5、重启docker 服务
systemctl restart docker
docker start registry
将镜像上传至私有仓库
1
2
3
4
5
# 1、标记镜像为私有仓库的镜像
docker tag centos:7 192.168.220.12:5000/centos:7
# 2、上传标记的镜像
docker push 192.168.220.12:5000/centos:7
从私有仓库拉取镜像
1
2
#拉取镜像
docker pull 192.168.220.12:5000/centos:7
本文由作者按照 CC BY 4.0 进行授权