我刚刚开始研究Docker,这让我有些困惑。正如我在Docker网站上阅读的那样,容器与虚拟机不同。据我了解,容器只是一个沙箱,在其中运行了整个隔离的文件系统。
我还读到一个容器没有安装来宾操作系统。相反,它依赖于底层OS内核。
一切都很好。我感到困惑的是,有以操作系统命名的Docker映像。我们看到诸如Ubuntu,Debian,Fedora,CentOS等映像。
我的意思是:这些图像是什么?基于Debian映像创建容器与创建虚拟机并安装Debian有何不同?
我以为容器没有安装Guest OS,但是当我们创建映像时,我们将它们基于以一个OS命名的某个映像。
另外,在我看到的示例中docker run ubuntu echo "hello world"
,似乎我们正在使用Ubuntu来旋转VM,并使其运行command echo "hello world"
。
用与我们执行操作相同的方式docker run -it ubuntu /bin/bash
,似乎我们正在使用Ubuntu来启动VM,并使用命令行对其进行访问。
无论如何,那些以操作系统命名的映像是什么?使用这些映像之一运行容器并使用相应的来宾OS启动VM会有何不同?
这个想法是我们只与主机操作系统共享内核(因此,我们可以访问底层机器硬件资源,而无需虚拟化硬件),但仍按顺序使用容器上每个不同系统的文件和二进制文件支持我们想要运行的任何应用程序?