仍然对Docker感到困惑

时间:2020-02-01 01:39:00

标签: docker

我已经使用一个应用程序,并使用microsoft/aspnetcore:2.0基础映像为Windows Server 2016构建了一个docker映像。 我的问题是...我可以在什么机器/操作系统上运行容器? 我知道它不能在Linux上运行.....但是它可以在(例如)Windows Server 2016的任何版本上运行吗? Windows Server 2019怎么样?
该体系结构是AMD64...。这是否意味着该容器只能在具有该确切体系结构的计算机上运行?

我试图弄清楚为什么容器被认为是有益的

1 个答案:

答案 0 :(得分:1)

我对Docker Windows容器没有任何经验,但是总体上我对Docker容器有很多经验,Windows和Linux容器之间的概念应该基本相同。

运行已构建的应用程序时,无论是在Windows Server 2016,Windows Server 2019甚至Windows 10 Pro上运行,应用程序都应功能完全相同。在幕后,Docker提供了一个隔离的应用程序环境。从您的应用程序的角度来看,它只知道/体验/看到自己以及正在运行的Windows内核。例如,如果您的IIS实例也在该服务器上运行,那么您的应用程序将毫无头绪。这里的要点是Docker提供了一种方法:

  1. 完全隔离地在同一台计算机上运行一个应用程序的多个版本。
  2. 为每个应用程序提供更干净的运行环境。
  3. 与运行离散VM相比,资源利用效率更高

Docker的另一个巨大好处是,它为临时环境提供了一种方法。这意味着您应该期望在#1机器上运行的应用程序与在#2机器上的行为具有完全相同的行为。它消除了“在我的机器上工作”的心态,尤其是在没有安装/遗忘一些其他第三方依赖的情况下,因为它们将作为构建的一部分捆绑到容器中。

最后,关于架构。您构建的应用程序旨在与构建该应用程序的Windows内核体系结构兼容。就您而言,根据我的理解,AMD64意味着x86_64体系结构。这意味着您的容器可以在任何64位x86机器(AMD或Intel)上运行。您的容器无法在其他任何体系结构上运行:x86(32位),386、486,ARM,ARM 64等。我认为,对于Windows,这并不重要,因为90%的时间您正在x86_64上运行。但是,使用Linux最终会遇到从SPARC到ARM的所有问题,因此,区分体系结构很重要。

当我开始使用docker时,我也有很多相同的问题。尽管产品“ Docker”有时会碰运气,但“容器”的概念及其在正确使用时提供的好处非常强大,我几乎将我从事的每个项目都使用。

相关问题