为什么 Ubuntu docker 镜像不是虚拟机 [重复]

2024-02-05

我明白了虚拟机和容器之间的巨大区别。但这让我对 Ubuntu 容器如何存在感到困惑。这对我来说感觉很矛盾,因为 Ubuntu 是一个操作系统。

https://hub.docker.com/_/ubuntu https://hub.docker.com/_/ubuntu

这不是一个完整的来宾操作系统吗?那么是什么让它成为虚拟机上的容器呢?或者容器和虚拟机之间的界限是否模糊?

我尝试过谷歌搜索,但我发现的唯一结果是经典的虚拟机与容器答案,这并不是我真正要问的,我不认为。

编辑 - 我已更新以尝试进一步澄清我的问题。


Docker 是一种在隔离的轻量级容器中运行应用程序的新方法。尽管它们是孤立的,但它们可以与其他组件集成。

效率并不是唯一的收益。当您打包应用程序以在 Docker 中运行时,您就获得了可移植性。您可以在笔记本电脑上的 Docker 容器中运行您的应用程序,它在数据中心的服务器上以及任何云中的虚拟机 (VM) 上的行为方式完全相同。

另一个重要推动因素是安全性。容器在应用程序之间添加了安全隔离,因此您可以确信,如果一个应用程序遭到破坏,攻击者无法继续破坏同一主机上的其他应用程序。

当您将应用程序打包为 Docker 映像时,它们都具有相同的形状 - 您可以用相同的方式部署、管理、保护和升级它们。

回答你的问题:

  • 每个 docker 容器都运行自己的轻量级虚拟机,因此常规虚拟机之间的界限很模糊,但事实上 docker 容器并不像常规虚拟机那样适用于 GUI 应用程序。

  • 你假设错了。您需要在 Dockerfile 中包含操作系统,然后再包含应用程序代码。但是,如果您只想运行一个简单的控制台应用程序,则根据您的应用程序,Docker Hub 上存在不同大小的操作系统映像,例如 Windows Nanoserver。那么您就不需要具有完整操作系统的虚拟机。您可以做的另一件事是在 dockerfile 中运行分阶段构建,这将编译您的应用程序,并且仅在映像中包含运行时环境,从而有效地减小其大小。

  • Docker 的主要目的是对新旧应用程序进行 docker 化,这意味着将它们拆分到逻辑上独立的容器中。当应用程序进行 docker 化时,它会获得安全性、依赖项分离、零停机维护、持续集成管道、可移植性、效率等优势。您无法使用常规虚拟机对应用程序进行容器化。 Docker 容器和常规虚拟机的用途和构建是不同的。

如果您正在使用 Windows 容器,我可以推荐以下书籍,以更好地了解 docker 的用途:https://www.packtpub.com/virtualization-and-cloud/docker-windows https://www.packtpub.com/virtualization-and-cloud/docker-windows

如果没有,那么 packt 会提供有关 Linux 上 docker 的其他书籍。

我希望这回答了你的问题 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Ubuntu docker 镜像不是虚拟机 [重复] 的相关文章

随机推荐

  • 在 Angular 2 打字稿中导入gapi.auth2

    我尝试在打字稿中从 Googlegapi auth2 导入一些类或函数 但即使我在typings目录中正确添加了gapi auth2类型 下面的代码也永远不会工作 import GoogleAuth from gapi auth2 我总是遇
  • 将 Firebase 与 Kotlin 协程结合使用:取消作业时任务不会取消

    在协程内部 借助 kotlinx coroutines play services 库中的await 函数 我使用如下内容 suspend fun uploadFile uri Uri withContext IO Firebase sto
  • 优化 JavaScript 代码以小写 JSON 属性名称

    我正在开发一个 Web 应用程序 该应用程序接收具有大写属性名称的 JSON 数据 我需要这些属性名称为小写 因此我使用一个函数递归地循环遍历 JSON 对象并将它们转换为小写 问题是我的 JSON 回复可能会变得非常大 我希望该函数能够表
  • 区分 tkinter 菜单中两个相同项目的问题

    我创建的程序允许用户在键盘上输入的任何字母都写在海龟图形画布上 在我的程序中 我还创建了一个 Python 菜单 每次用户执行函数 绘制字母时 都会向该菜单写入一个 Point 对象 针对每个字母函数 但是 由于我的程序的性质 用户还可以将
  • Helm 和 Kustomize 之间有什么区别?

    我已经使用 Kubernetes 和 Helm 一段时间了 现在第一次接触 Kustomize 但 Kustomize 和 Helm 之间到底有什么区别呢 两者只是捆绑 K8s 元素 例如服务 部署等 的不同解决方案吗 或者同时使用 Hel
  • 为什么 String.raw 不能以反斜杠结尾? [复制]

    这个问题在这里已经有答案了 字符串 raw https developer mozilla org en US docs Web JavaScript Reference Global Objects String raw可用于创建包含反斜
  • 骆驼聚集策略

    我正在解析一个 CSV 文件 将其分割并通过骆驼中的多个处理器进行路由 有两个端点 一个有错误的数据 而另一个有经过验证的数据 我需要汇总数据的建议 假设 CSV 文件有 10 条记录 其中 6 条到达一个端点 4 条到达另一个端点 我如何
  • Apache 307 Redirect 重定向 POST 数据

    PayPal 很烦人 如果您有数千名客户订阅POSTIPN 即时付款通知 到某个 URL 您永远无法更改该 URL 如果您希望将 IPN 发送到另一个 URL 他们的建议 告诉您的所有客户在更改 IPN URL 后取消订阅并开始新订阅 伟大
  • 如何将每个回调包装在一个地方以改进错误处理

    在我的 GWT 应用程序中 有许多不同的异步调用使用许多不同的服务对服务器进行 为了更好地处理错误 我想包装所有回调 以便我可以处理异常 例如InvocationExceptions在一个地方 一个超类实现AsyncCallback并不是真
  • 如何为 XAttribute 指定命名空间,同时拥有另一个具有相同值的命名空间?

    我想要做的只是一个用于将数据表导出到 Excel 的 XML 文档 所以我需要的是这样的
  • 将文本框中的字符串转换为 dd/mm/yyyy 日期

    如何将文本框中的字符串转换为 dd mm yyyy 日期形式 我的意思是 Date d Date textBox Text 我想将它用作 SQL 中的参数Date数据类型如下 command Parameters Add new Npgsq
  • iOS EventKit - 事件未从日历中删除

    我正在使用以下代码删除事件 store requestAccessToEntityType EKEntityTypeEvent completion BOOL granted NSError error if granted EKEvent
  • C:函数调用时传递参数时的类型转换

    来自 C 编程语言 第二版 由于函数调用的参数是表达式 因此当参数传递给函数时也会发生类型转换 如果没有函数原型 char 和short 会变成int float 会变成double 通过阅读文本 我得到的印象是 除非您使用强制转换或函数原
  • 计算花费的时间总和

    我有一个 SQL 查询来计算并发作业所花费的时间 这是查询 SELECT user concurrent program name DECODE phase code C Completed phase code phase code DE
  • 向 UIView 添加渐变的现代技术

    我知道向 UIView 添加背景渐变的几种方法 我想知道最有效和可扩展的方法是什么 为什么 以下是我使用过的技术 创建 UIView 的子视图并覆盖drawRect 我在其中在当前上下文中绘制渐变 A 当使用上面的渐变时 用视图边界创建它
  • Python - 如何强制使用工厂方法来实例化对象?

    我有一组相关的类 它们全部继承自一个基类 我想使用工厂方法来实例化这些类的对象 我想这样做是因为这样我可以在将对象返回给调用者之前将对象存储在以类名为键的字典中 然后 如果有对特定类的对象的请求 我可以检查我的字典中是否已存在该对象 如果没
  • AWS Lambda Node.js 全 ICU

    我使用以下命令在本地运行 node js 应用程序 node icu data dir node modules full icu app local js 如何在AWS Lambda环境中指定icu data dir Thanks 您应该
  • JPA 将 STRING 列值连接成单个值,就像聚合函数一样

    是否可以使用 JPA 拥有一个自定义聚合函数来扩展 concat 以便将列值连接成单个字符串 我最近在使用 JPA 和 H2 数据库时遇到了同样的问题 我试着打电话给组连接 http www h2database com html func
  • 有没有办法在 cocoapods 中使用拉取请求?

    有了 swift 3 许多 cocoapods 都在努力跟上每个测试版带来的变化 有时这些更改不会很快合并到分支中 在这些情况下 有没有办法使用分支的拉取请求 例子 https github com MengTo Spring pull 1
  • 为什么 Ubuntu docker 镜像不是虚拟机 [重复]

    这个问题在这里已经有答案了 我明白了虚拟机和容器之间的巨大区别 但这让我对 Ubuntu 容器如何存在感到困惑 这对我来说感觉很矛盾 因为 Ubuntu 是一个操作系统 https hub docker com ubuntu https h