仍然对docker感到困惑

仍然对docker感到困惑,docker,Docker,我使用microsoft/aspnetcore:2.0base image为windows server 2016制作了一个应用程序和docker镜像。 我的问题是…我可以在哪些机器/操作系统上运行容器? 我知道它不能在Linux上运行……但它能在(例如)任何版本的windows server 2016上运行吗?windows server 2019怎么样? 架构是AMD64…这是否意味着容器将只在具有该架构的机器上运行 我正在试图弄清楚为什么容器被认为是有益的我对Docker Windows容

我使用
microsoft/aspnetcore:2.0
base image为windows server 2016制作了一个应用程序和docker镜像。 我的问题是…我可以在哪些机器/操作系统上运行容器? 我知道它不能在Linux上运行……但它能在(例如)任何版本的windows server 2016上运行吗?windows server 2019怎么样?
架构是AMD64…这是否意味着容器将只在具有该架构的机器上运行


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

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

运行内置应用程序时,无论您在Windows Server 2016、Windows Server 2019甚至Windows 10 Pro上运行,应用程序的功能都应该完全相同。在幕后,Docker提供了一个独立的应用程序环境。从应用程序的角度来看,它只知道/体验/看到自己和它运行的Windows内核。比如说,如果你有一个IIS实例也在该服务器上运行,那么你的应用程序就不知道了。这里的要点是Docker提供了一种方法:

  • 在同一台计算机上完全隔离地运行应用程序的多个版本
  • 为每个应用程序提供更干净的运行环境
  • 比运行离散虚拟机资源效率更高
  • 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”有时会被击中或击中,但“容器”的概念及其在正确使用时所带来的好处非常强大,我几乎在我从事的每个项目中都使用它。

    非常喜欢关于“它只知道/体验/看到自己及其运行的Windows内核”的评论……这给我带来了急需的清晰。很高兴我能帮忙,@jamesmurphy。我还并没有完全阅读这篇文章,但我相信它会给你们提供一些关于很多概念的极好的背景故事: