docker基本元素和底层实现

时间:2024-11-03 18:37:32

docker是轻量级的操作系统虚拟化解决方案

优点

1、基于操作系统层面

2、启动速度快(秒级)

3、资源利用率高

4、性能高、易管理

docker有3大基本要素

分别是

1、镜像:只读模板,用来创建docker容器。

2、容器:镜像创建的运行实例,启动时创建一层可写曾作为最上层。

3、仓库:集中存放镜像文件场所,分私有仓库和公有仓库。

docker的底层实现有

1、名字空间:每个容器都有自己单独的名字空间,运行在其中的应用都像是在独立的操作系统中运行一样。名字空间保证了容器之间彼此互不影响。

  pid名字空间: 不同的用户进程就是通过pid名字空间隔离的,且不同名字空间可以有相同pid

  net名字空间: 网络隔离是通过net名字空间实现的。每个net名字空间有独立的网络设备,IP地址,路由表,/proc/net目录

  ipc名字空间: 进程间交互方法(IPC) 信息量、消息队列、共享内存

  mnt名字空间: 将一个进程放到一个特定的目录执行

  ufs名字空间: 独立的hostname、domainame

  user名字空间: 用容器内部的用户执行程序而非主机的用户

2、控制组:对共享资源进行隔离、限制、审计等

3、联合文件系统(AUFS):支持对文件系统的修改作为一次提交来一层层叠加、同时可以将不同目录挂载到同一虚拟文件系统下。镜像可以通过分层进行继承,基于基础镜像,可以制作各种具体应用镜像,不同容器可以共享一些基础的文件系统层。

4、网络实现:docker启动时会在主机建立一个docker0的虚拟网桥,同时分配一个随机的本地为占用的私有网段给docker0,如172.16.0.0。启动容器时,创建veth pair接口,一端在容器内及eth0,一端被挂载到docker0,名称以veth开头。每次创建新容器时,从可用地址段选一个空闲IP分配给容器eth0端口。使用docker0接口IP做所有容器的默认网关。