我刚刚开始学习 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 有什么不同?
我们只是与主机操作系统共享内核的想法(因此我们可以访问底层机器硬件资源,而无需虚拟化硬件),但仍然按顺序使用容器上每个不同系统的文件和二进制文件支持我们想要运行的任何应用程序?
假设我们有以下情况:有一个带有路由器的网络,在该网络上配置了互联网访问,这包括 DNS IP。然后,我们在此网络的服务器上设置 Active Directory,并将其提升为域控制器。
当我这样做时,其他计算机可以包含在创建的域中的唯一方法是将它们的 DNS IP 之一设置为指向域控制器。当我这样做时,我能够使计算机成为域的一部分。另一方面,这使得这些计算机停止从路由器接收 DNS 地址,因此它们无法在互联网上导航。
我找到的解决方案是将路由器上配置的第一个 DNS 地址作为辅助 DNS 地址添加到计算机上。我个人不喜欢这种方法,因为有两点:
DNS 是在每台计算机中手动设置的。对于少数人来说很好,但是如果有很多计算机,这很乏味,如果将来需要更改此设置,则需要更改所有计算机。
我可以设置的唯一 DNS 地址是主要的。在路由器上找到的第二个不能在计算机上使用,因为两个可用的已经在使用中。
所以我认为这个解决方案不是一个好的解决方案。如何正确设置域中的计算机以使用正确的 DNS 条目来导航 Internet,并且仍然能够通过将 DNS 条目指向域控制器来加入域?