Arp*_*jee 3 linux windows containers docker docker-desktop
我有Windows 10企业版,并且已经安装了Docker Desktop,启用了WSL2后端,并下载并安装了Linux内核更新包。
我正在学习 Docker,我对 Docker 在幕后的工作原理有一些疑问。
Linux container它需要 Windows 内核,对吧?我有默认Linux container模式,我尝试了这两个命令。
第一个适用于第二个我收到以下错误。
1903: Pulling from windows/nanoserver no matching manifest for Linux/amd64 in the manifest list entries
但是当我切换到它时windows containers它就起作用了。
编辑:- 需要对此进行更多说明- 从评论部分复制问题。
还有一件事,容器不会在 WSL2 中同时访问 Windows 和 Linux 内核,对吗?毕竟它们只是操作系统中的隔离空间,那么它们可以在 Windows 中,也可以在 Linux 中?如果我错了,请纠正我。Linux 映像的构建方式使其具有运行 java 的一切,并且由于 java 是一种跨平台语言,因此它可以在 Linux 内核上运行,这是这个概念吗?
关于我在这里制作的架构图 - 容器(带有应用程序文件的操作系统中的隔离进程),如果是 Linux 容器,则所有容器(多个容器)都在同一个 WSL2 VM 上运行,对吧?
首先,好问题。
我希望我能尽可能地回答它。
那么,默认情况下docker运行Linux容器,我们什么时候需要Windows容器呢?
你不需要Windows容器。您应该始终考虑您的应用程序需要什么。例如,如果您正在开发 Java 应用程序,您将提取 Java 映像,而不是整个主机操作系统。我唯一一次提取 Windows 映像是当我对只能在 Windows 上运行的 ASP.NET 应用程序进行 Docker 化时。
Linux 容器如何运行我的 java 应用程序?肯定需要windows内核吧?
在docker的上下文中:
Docker for Windows 允许您模拟在 Windows 上运行 Linux 容器,但在底层创建了一个 Linux VM,因此 Linux 容器仍然在 Linux 上运行,Windows 容器在 Windows 上运行。
如果 docker 容器驻留在 WSL2 创建的轻量级实用虚拟机中,它是否可以访问其附带的 Linux 内核和 Windows 内核?
容器使用底层操作系统资源和驱动程序,因此 Windows 容器只能在 Windows 上运行,Linux 容器只能在 Linux 上运行。Docker for Windows 允许您模拟在 Windows 上运行 Linux 容器,但在底层创建了一个 Linux VM,因此 Linux 容器仍然在 Linux 上运行,Windows 容器在 Windows 上运行。
那么我在 openjdk:8 映像上的 java 应用程序和 windows nanoserver 上有什么区别?
openJdk 映像和 Windows Nano Server 核心的区别在于它们使用的基础映像。openJdk 可能使用一些非常裸露的 unix 操作系统作为基础,其中 nanoserver 是一个完整的操作系统,即 Windows。
这些不需要windows内核来运行吗?openjdk 映像不需要 Windows 来运行,因为它是从 Linux 构建的。Docker for windows 将使用 WsL 来运行。Nanoserver 只能在 Windows 上运行(因为 Windows 映像只能在 Windows 上运行)。
那么 java 东西在 Linux 容器上运行起来如何呢?我理解这个问题是“openjdk镜像如何在linux和windows上运行?”
如果是这样,因为它使用linux操作系统作为其基础镜像,所以它可以默认在linux上运行。但是因为WsL2存在,所以创建了一个VM并在windows中模拟了linux操作系统。这就是为什么我们可以在 Docker for windows 上运行 windows 镜像和 linux 镜像。
我希望这对您有所帮助,这里有一些问题中的额外提示供您考虑。
如果您想了解更多信息,请阅读这篇文章。
| 归档时间: |
|
| 查看次数: |
2393 次 |
| 最近记录: |