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