当前位置: 首页 > 知识库问答 >
问题:

我仍然对Docker容器和图像感到困惑

谭坚诚
2023-03-14

我知道容器是应用程序和主机(托管运行进程)之间的一种隔离形式。我还知道容器映像基本上是运行时环境的包(希望我得到了正确的)。让我困惑的是,当他们说Docker图像不保留状态时。因此,如果我创建一个带有数据库(如PostgreSQL)的Docker映像,当我停止容器并重新启动时,所有数据不会被清除吗?为什么要在Docker容器中使用数据库?

我也很难掌握LXC。在另一个问题页面上,我看到:

LinuX容器(LXC)是一种操作系统级虚拟化方法,用于在单个控制主机(LXC主机)上运行多个独立的LinuX系统(容器)

那到底是什么意思?这是否意味着只要主机支持LXC,我就可以在同一台主机上运行多个版本的Linux?还有什么别的吗?

共有1个答案

皇甫飞飙
2023-03-14

LXC和Docker,两者完全不同。但是我们说两者都是集装箱持有者。

有两种类型的容器,

1.应用程序容器:其主要格言是提供应用程序依赖关系。这些是Docker集装箱(轻型集装箱)。它们在您的主机中作为一个进程运行,并完成您想要的所有事情。他们实际上不需要任何操作系统映像/启动的东西。它们在几秒钟内就来了又走了。不能在docker容器内运行多个进程/服务。如果您愿意,您可以在docker容器中运行多个进程,但这很费劲。在这里,资源(CPU、磁盘、内存、RAM)将被共享。

2.系统容器:这些是胖容器,意味着它们很重,它们需要操作系统映像来启动自己,同时它们没有虚拟机那么重,它们与虚拟机非常相似,但在架构上有点不同。

在这里,让我们说Ubuntu作为一台主机,如果你在你的ubuntu主机上安装和配置了LXC,你可以在Ubuntu主机上运行一个Centos容器,一个Ubuntu(带有Differnet版本),一个RHEL,一个Fedora和任何linux风格。您还可以在LXC contianer中运行多个进程。这里也将进行资源共享。

因此,如果你有一个巨大的应用程序运行在一个LXC容器中,它需要更多的资源,同时如果你有另一个应用程序运行在另一个LXC容器中,这需要更少的资源。需求较少的容器将与资源需求较多的容器共享资源。

回答你的问题:

因此,如果我用数据库(比如PostgreSQL)创建一个Docker映像,当我停止容器并重新启动时,所有的数据不会被删除吗?

您不会创建包含某些数据的数据库docker映像(不建议这样做)。您可以从映像运行/创建容器,并将数据附加/装载到它。

因此,当您停止/重新启动一个容器时,如果您将该数据附加到一个卷,那么数据将永远不会丢失,因为该卷位于docker容器之外的某个位置(可能是NFS服务器或主机本身)。

这是否意味着只要主机支持LXC,我就可以在同一主机上运行多个版本的Linux?它还有什么意义?

是的,你能做到。我们在生产中使用LXC容器。

 类似资料:
  • 我用这样的JAVA_OPTS启动了 jvm: 过了一段时间,当我查看GC日志时:

  • 我正在尝试提出一种解决方案,它涉及在连接操作之后应用一些逻辑,从多个中的中选择一个事件。这类似于reduce函数,但它只返回1个元素,而不是递增地返回。因此最终结果将是单个(,对,而不是一个 每个键保证只到达一次。 假设像上面这样的连接操作,它用4个生成了1个,成功地连接并收集在。现在,我想做的是,立即访问这些值,并执行一些逻辑以将正确匹配到一个。例如,对于上面的数据集,我需要(,和)。 将为每个

  • 所以我一直在读Kafka的语义学,我对它的工作原理有点困惑。 我理解生产者如何避免发送重复的消息(以防代理的ack失败),但我不明白的是,在消费者处理消息但在提交偏移量之前崩溃的情况下,一次是如何工作的。Kafka不会在这种情况下重试吗?

  • 假设我有一个,它依赖于IResourceManager 使用构造函数注入是解决这种依赖性的正确方法吗 我是否必须在容器中注册我的(及其“派生类型”),以便创建具有已解析依赖项的它们的实例?难道这一切都不复杂吗 在服务定位器周围使用静态工厂是不是很糟糕 撇开单元测试不谈,我真的会因为使用服务定位器反模式而受到惩罚吗 很抱歉一次问很多问题。我已经阅读了以下SO问题和许多其他问题,但阅读它们只会增加我的

  • 问题内容: 我对这三个文件的目的感到困惑。如果我的理解是正确的,则是程序在其中写入其在进程中运行任务的请求的文件,是内核在其中写入其输出以及请求其从中访问信息的进程的文件,并且是该文件。输入所有例外。在打开这些文件以检查它们是否确实发生时,我似乎没有任何暗示! 我想知道的是这些文件的用途到底是什么,用很少的技术术语就可以完全肯定答案! 问题答案: 标准输入 -这是您的过程读取以获取您的信息的 文件

  • 版本:2.1.11 问题:我有一些错误的参数配置:max.poll.records:500 max.poll.interval.ms:10000。但消耗大约需要25000秒。因此,它将遇到异常:org.apache.kafka.clients.consumer.CommitFailedException:提交无法完成,因为组已经重新平衡并将分区分配给了另一个成员。这意味着对poll()的后续调用之