討論一下“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容器。