讨论一下“Container Host”和“Container OS”的关系。
Container Host: 也叫Host OS, Host OS是Docker Client 和Docker Daemon进程运行的宿主机。在宿主机是linux系统,且容器不是Hyper-V容器(轻量级操作系统,用于windows兼容)的情况下,Docker容器和宿主机(Container Host)共享内核。
Container OS: 也叫基础OS(Base OS),Base OS指的是docker容器内应用运行的操作系统,比如Ubuntu, CentOS或windowsservercore。一般情况下,是指定基础镜像的,但是你也可以不指定,在这种情况下,容器直接默认使用宿主机作为基础OS。
容器和虚拟机的区别和联系
相同点
- 隔离环境:容器和虚拟机都可以提供给进程独立的进程空间,文件系统,环境变量...
- 主机间移植: 虚拟机可以在不同的Host Hypervisor,容器可以在不同的Container Host间移植。里面的内容可以完全不变。虚拟机和容器都可以保存为镜像。
- 资源限制: 虚拟机和容器都可以限制带宽,CPU使用率,内存等资源。
不同点
- 抽象级别:
虚拟机对硬件进行抽象,虚拟机包含完整的操作系统内核,因此你可以在windows上运行linux虚拟机,linux上运行windows虚拟机。但是容器不行,容器不包含完整的操作系统内核,只包含linux发行版必要的软件。因此,你无法在windows上运行linux容器。