docker容器的分层思想
1. 容器分层结构图:
2.dockerfile分层的结构图:
配合图详解:
bootfs : kernel boot
rootfs : /etc /dev /bin /usr ..
容器的内核会映射到容器的rootfs,等启动到bootfs的时候,容器就会卸载掉rootfs,由系统的rootfs也就是kernel进行支持,而bootfs的目录结构就会很小,所以容器就会很小。
注意:不同linux的发行版的rootfs和bootfs是不一样,服务的软件包也不一样,如:centos7的是system.d ,centos6的是init.还有包管理器也不一样,如:Ubuntu的包管理器是apt,linux是yum。但是对于kernel差别不大,是开源的,自己定义就可以重新保装。
3.busybox嵌入式系统,是一个工具集,提供大量的工具命令,
busybox : others rootfs 提供其他程序的目录结构,只提供目录结构,不提供内核,嵌入式系统为上层的各自操作系统提供,如果是物理机的内核就走自己的最简单的rootfs,如果是其他操作系统就可以选择busybox提供的其他的目录结构。
用在:测试,存储结构
4.所有的容器无法对kernel进行升级,如果安装的环境需要其他的版本的内核,则不能安装在docker容器中,需要放在虚拟机中运行,对kernel没限制的则可以使用docker容器运行。
5.镜像的分层结构:
一般情况dockerfile都是基于base基础镜像上进行修改的。
例子:
vim dockerfile
FROM centos
RUN yum install net-tools -y
RUN yum install elinks -y
CMD ["/bin/bash"]
注释:elinks 浏览器
注意:
dockerfile 每一行命令是一层,从上往下,第一层是net-tools
又加了一层elinks
【
为什么要使用分层结构:
因为docker很多容器基于一个基础镜像,可以为所有容器提供服务,达到资源共享,
】
最上边的一层——可写容器层
Write container
容器层下边就是镜像层——只读镜像层
read image
文件叠加问题:
(1)如果容器的后两层有相同的文件,容器层只能读取到最上层的文件,越靠上层的文件越被读到,由上而下读取,
(2)如果是修改的文件的则只会保存到容器里,不会保存到基础镜像的层上,而且如果只修改b,则只读取b文件,并不会读取别的文件。
(3)读取文件的话,就是把最基础的东西读到镜像来,进行修改并不占用容器空间,只是将这个文件读取上来。
6.host storage (热数据备份)容器的存储结构
就是将修改的文件同步出来存放到物理机的存储结构上。
容器写时复制:container layer:COW
- 【容器技术】Docker中的镜像分层技术详解
- 如何在docker容器内使用systemctl
- Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)
- 使用docker 拉取镜像和创建容器-nginx
- 如何使用 Weave 网络?- 每天5分钟玩转 Docker 容器技术(63)
- 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
- Windows10下的docker安装与入门 (三) 创建自己的docker镜像并且在容器中运行它
- Docker-开源的应用容器引擎
- 容器平台选型:Docker、DC/OS、K8S ?
- 阿里云部署Docker(7)----将容器连接起来
- Docker多台宿主机间的容器互联-centos7
- docker 新容器修改
- 如何创建 Swarm 集群?- 每天5分钟玩转 Docker 容器技术(95)
- Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令
- docker 进入容器,及docker 的相关命令
- Service IP 原理 - 每天5分钟玩转 Docker 容器技术(137)
- 携手 Google 和 Docker 为 Microsoft Azure 带来全新的开源容器技术
- 分层开发思想与小笼包
- spring boot 使用docker在阿里云容器服务部署
- Kubernetes(K8S)集群管理Docker容器(部署篇)