1. Docker架构:
docker采用了client-server的模式,docker客户端向终端用户提供CLI,同时与docker daemon之间采用socket或者RESTFUL API来进行通信。基本组件包括: docker image, docker container, docker respository
docker 镜像:
docker镜像本质上是很多文件层layer,docker采用UnionFS来将这些layer组装起来,成为镜像。比如一个ubuntu镜像,当你将某个服务升级,docker会对应创建一个新的层,这个新的层包含了升级的服务的信息,所以,很多情况下,并不需要重新发布整个镜像,只需要升级对应的层就可以。这也是docker之所以强大的地方,解决了镜像的快速分发。
docker responsitory:
docker 仓库是用来保存镜像的地方,共有仓库就是docker hub,里面包含各种各样的镜像。
docker container:
docker 容器,包含了某个应用所需要的的基础环境,也成为docker运行时。
2. docker 原理
namespace:
pid namespace: 不同的docker容器,可以认为是运行在不同的进程namespace中,各个namespace之间的PID 可以相同。每个namespace中都有PID=1的进程。由于 namespace允许嵌套,父namespace会影响到子namespace,同样的父namespce的/proc中也可以看到子namespace的进程,但是PID会有所不同
mnt namespace:不同container看到的目录结构会所有不同,这样每个container,每个namespace中看到的目录结构也就不同
uts namespace: 容器之间可以拥有自己的hostname和domain name等
user namespace: container之间可以拥有自己的user id和group id。
end