关注WX:CodingTechWork,一起学习进步。
引言
在做k8s或者docker相关工作时,有没有一个疑问,什么是docker容器?什么是pod?容器和pod又有什么关系?
容器
- docker包括三个概念:镜像(image),容器(container)、仓库(repository)
- 容器就是镜像运行时的实体,镜像和容器的关系类比与Java面向对象程序设计中的类和实例是一样的概念。
- 每个容器的文件系统与其他容器是隔离的。
- 容器可以被创建、启动、停止、删除以及暂停等。
- 容器的实质是进程,运行于属于自己独立的命名空间。
- 容器内的存储层是跟随容器变化的,生命周期同容器保持一致。容器删除,则存储层信息丢失。所以存储东西最好使用存储卷(volume)、绑定宿主目录等方式。
- 容器是应用程序层的一种抽象,将代码和依赖关系打包在一起,可以多个容器同时运行在同一台机器上,并与其他容器共享操作系统内核。
pod
- pod是k8s调度的最小单元。
- 1个pod可以包含1个或多个容器,可以理解为pod是容器集合。
- pod相当于逻辑主机,每个pod通过describe可以看到都有自己的ip地址。
- pod内的容器可以共享相同的ip和端口空间。
- 进入pod后,正常的linux命令可以使用,若pod内包含多个容器,进入到每个容器都相当于进入了一个逻辑主机。
容器和pod关系
1个pod可以包含1个或多个容器,可以理解为pod是容器的容器。我们可以通过kubectl describe pod <pod_name> -n <namespace_name>
命令查看对应pod的容器信息,或者直接查看yaml源文件。
网友评论