13年docker开源,14年k8s出现,后者的出现是对前者更好的管理。Docker作为最小的容器,在足够数量的情况下就必须得有应用对其进行优雅的管理和编排。

容器,是一个视图隔离(只能看见容器内的进程,拥有独立主机名等),资源可限制(可以限定其内存大小,cpu个数),独立文件系统(镜像的产生原因)的进程集合;

构建镜像基于dokcerfile,其配置为:

1. 构建依赖:FROM xxxxx #表示镜像使用什么依赖进行构建。

2. 工作目录:WORKDIR /xx/xx #表示在哪个目录下进行构建,可以理解为cd。

3. 文件拷贝:COPY 当前物理机路径 容器内路径 #将文件拷贝至镜像内,一般用来修改配置文件,使其镜像被拉取下来后可以直接适配使用。

4. 命令执行:RUN 指令 #用于具体执行命令

5. 命名: CMD  #用于指定镜像名称

后续可使用docker pull从镜像仓库拉取镜像,docker run 运行容器。

提到容器,生命周期是一个很重要的事情,容器的生命周期是Init进程的生命周期,在日常操作中对容器重启和删除是常有的,而容器在删除后,其运行数据并不会被保存,所以就必须让数据持久化,让数据独立于容器的生命周期,这在容器中也有很多方法。详见docker的存储方式。

 

Moby对于容器来说,解构了整个容器,让其功能可以按需的单独替换和操控。

 

容器相对于VM的差异。

1. 容器无GuestOS,仅作为进程级别的隔离,所以启动速度更快,磁盘资源占用更少。

2. 隔离效果比VM差