其他知识点,会在后续学习过程中再做完善。
镜像(Image)和容器(Container)的关系:
- 镜像是静态的定义,容器是镜像运行的实体。
- 就像是Linux命令,命令的配置文件是镜像,使用命令配置文件运行命令的过程是容器。
容器的隔离方式:
容器的实质是进程,但与直接在宿主机执行的进程不同,容器进程运行于属于自己独立的命名空间。
为进程提供运行环境,并且能够保护其内部进程不受其它进程干扰。
六种名称空间:
名称 | 系统调用参数 | 隔离内容 |
UTS | CLONE_NEWUTS | 主机名,域名 |
IPC | CLONE_NEWIPC | 信号量,消息队列和共享内存 |
PID | CLONE_NEWPID | 进程编号 |
Network | CLONE_NEWNET | 网络设备,网络栈,端口等 |
Mount | CLONE_NEWNS | 挂载点(文件系统生成树) |
User | CLONE_NEWNSER | 用户和用户组 |
容器存储层:
- 容器也是分层存储的。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,
我们可以称这个为容器运行时读写而准备的存储层为容器的存储层。
- 容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。
- 容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。
数据卷:
- 所有文件写入操作,都应该使用数据卷(Volume),或者绑定宿主目录,在这些位置的读写会跳过
容器存储层,直接对宿主[或网络存储]发生读写,其性能和稳定性更高。
- 数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器可以随
意删除,重新启动,数据却不会丢失