宿主机和容器

2023-12-19

宿主机(Host)和容器(Container)是 Docker 中的两个重要概念,描述了 Docker 环境中的两个主要部分。

宿主机(Host)
宿主机是指安装了 Docker 引擎(Docker Engine)的物理计算机或虚拟机。它是 Docker 运行的基础,负责管理 Docker 容器的创建、运行和监控。宿主机拥有自己的操作系统和硬件资源,并通过 Docker 引擎提供了对容器的支持。

容器(Container)
容器是在宿主机上运行的轻量级、可移植的独立软件包。它封装了应用程序及其依赖项、运行时环境和文件系统,并与宿主机操作系统共享内核。每个容器都是相互隔离的,拥有自己的文件系统、网络空间和进程空间,但与宿主机共享系统内核。

在 Docker 中,宿主机和容器之间的关系可以理解为宿主机提供了资源和运行环境,而容器是在这个环境中运行的应用程序的封装。

Docker 引擎允许用户在宿主机上创建和运行多个容器,每个容器都是独立运行的,并且可以在同一台宿主机上共存。它们之间是相互隔离的,每个容器都有自己的运行时环境,因此可以轻松移植和部署到不同的环境中。

总之,宿主机提供了 Docker 运行环境和资源支持,而容器则是在这个环境中运行的独立、轻量级的应用程序封装。容器技术使得应用程序能够更加便捷地部署、移植和管理。

举例说明

想象你有一台装有 Docker 引擎的物理机或者虚拟机,这就是宿主机。现在你想在这个宿主机上运行多个应用程序,每个应用程序都有自己的依赖项和运行环境。这些应用程序可以通过 Docker 容器来运行。

举个例子,假设你有一个 Web 应用程序和一个数据库应用程序,你希望它们分别在不同的环境中运行:

  1. Web 应用程序容器

    • 你创建了一个 Docker 镜像,其中包含了 Web 应用程序的代码、依赖项和配置信息。
    • 通过 Docker 引擎,在宿主机上创建了一个名为 “WebAppContainer” 的容器,并在其中运行了这个镜像。
    • 这个容器独立运行,拥有自己的文件系统和运行时环境,并且通过指定的端口提供了 Web 应用程序的服务。
  2. 数据库应用程序容器

    • 你又创建了一个 Docker 镜像,其中包含了数据库应用程序所需的代码、依赖项和配置信息。
    • 通过 Docker 引擎,在同一台宿主机上创建了一个名为 “DBContainer” 的容器,并在其中运行了数据库镜像。
    • 这个容器也是独立运行的,有自己的文件系统和运行时环境,提供了数据库服务。

这样,你就在同一台宿主机上运行了两个独立的容器,每个容器都包含了不同应用程序的运行环境。宿主机提供了资源和运行环境支持,容器则是运行在这个环境中的独立实例,它们互相隔离、相互独立运行,但共享宿主机的资源。

通俗解释

可以把宿主机比作一辆运输车,而容器则是运输车上的不同货物。

想象你有一辆大型的运输车,这辆车就是宿主机。你想在这辆车上运输不同的货物,每种货物都有自己的特性和要求。这些货物就可以比作容器,每个货物(容器)都被放置在运输车(宿主机)上,而且它们各自是独立的。

举例来说:

  1. 运输一批水果

    • 你在运输车上放置了一个装满水果的箱子。这个箱子里可能有苹果、橙子和香蕉,它们各自是不同的货物(容器)。每种水果都有自己的特性,但它们被放在同一个箱子中,共享了运输车的空间和资源。
  2. 另一批是家具

    • 在同一辆运输车上,你又装载了一个装满家具的箱子。这个箱子里可能有椅子、桌子和柜子等不同的家具,它们也是独立的货物(容器),但它们和水果箱子不冲突,因为它们各自在自己的容器内。

在这个例子中,运输车(宿主机)提供了运输的环境和资源,而水果和家具(容器)是在这个环境中被独立运输的货物。它们各自有自己的特性和特点,但共享了同一辆运输车的空间和支持。这种隔离的特性使得不同类型的货物可以同时被运输,而互不干扰。

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

宿主机和容器 的相关文章

  • Netbeans 8.1 Gnome 3 GTK+ UI 字体和选项卡高度

    我刚刚在运行 GNOME 3 桌面的 Ubuntu 16 04 上安装了 NetBeans 8 1 如果可能的话 我想继续使用 IDE 的 GTK 外观和感觉 但 UI 上的字体 尤其是选项卡中的字体 太小且重叠 我尝试添加 fontsiz
  • 使用 Tabula 通过 Python 读取 pdf 时出现 Java 错误

    我已经安装了 tabula 库 用于使用 python 将 pdf 读取到 pandas 数据框中 但是当我运行代码时 import tabula df tabula read pdf sample1 pdf pages 1 我得到了例外
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • Java 中如何将 char 转换为 int? [复制]

    这个问题在这里已经有答案了 我是Java编程新手 我有例如 char x 9 我需要得到撇号中的数字 即数字 9 本身 我尝试执行以下操作 char x 9 int y int x 但没有成功 那么我应该怎么做才能得到撇号中的数字呢 ASC
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • 如何在 ant 中为 junit 测试设置 file.encoding?

    我还没有完全完成file encoding 和 ant https stackoverflow com questions 1339352 how do i set dfile encoding within ants build xml
  • 从jar中获取资源

    我有包含文件的 jar myJar res endingRule txt myJar wordcalculator merger Marge class 在 Marge java 中我有代码 private static final Str
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 在 Spring 上下文中查找方法级自定义注释

    我想知道的是 所有的类 方法Spring http en wikipedia org wiki Spring Framework注释为 Versioned的bean 我创建了自定义注释 Target ElementType METHOD E
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 新年跨年烟花超酷炫合集【内含十八个烟花酷炫效果源码】

    以下展示为全部烟花特效效果 下方仅展示部分代码 源码获取见文末 HTML5烟花喷泉
  • 1005. K 次取反后最大化的数组和 && 增强for循环(foreach循环)遍历数组

    1005 K 次取反后最大化的数组和 原题链接 完成情况 解题思路 参考代码 1005K次取反后最大化的数组和 1005K次取反后最大化的数组和 简洁写法 错误经验吸取 增强for循环 foreach循环 遍历数
  • 关注MCU 开发中的无限循环

    在 MCU 的开发过程中 我们经常会遇到需要使用无限循环的情况 例如 在前后台系统中 我们需要在一个无限循环中处理各种任务 在实时性操作系统中 我们也可能需要在一个无限循环中调度各个任务 那么 处理无限循环的语句有哪些写法呢 目前常见的有两
  • Vue的脚手架

    脚手架配置 脚手架文档 Vue CLI npm config set registry https registry npm taobao org vue config js配置选项 配置参考 Vue CLI ref选项 ref和id类似
  • 不是帆软BI用不起,而是奥威BI更具性价比

    说起BI软件 很多人都要提名帆软BI 但帆软BI虽好 却不一定适合所有企业 对很多预算一般的企业来说 性价比高的BI软件更符合实际情况 而要说起BI软件的性价比之王 那就不得不提奥威BI软件了 这是一款可0开发做企业数据分析的国产自研BI软
  • Try `npm install @types/postcss-plugin-px2rem` if it exists or add a new declaration (.d.ts) file...

    问题 Try npm install types postcss plugin px2rem if it exists or add a new declaration d ts file 这是由于引入第三方库但缺少声明文件的情况 这时 T
  • 项目进度管理:项目经理把控项目进度的技巧

    到项目后期 加班越发频繁 今天我们得加班完成这点工作了 这是在项目里我们听到最多的一句话 王嘉在公司好几年 也参与了几个项目 由于他各方面出色表现 公司分配给他一个小项目 初次成为项目经理的他信心满满 他觉得这不是一件难事 每天只需要监督好
  • Dubbo怎么实现动态感知服务下线的呢?

    Dubbo是一个高性能 轻量级的开源Java RPC框架 用于服务间的远程通信 为了实现动态感知服务下线 Dubbo提供了多种策略 服务监控 Dubbo提供了内置的监控功能 通过在服务提供者上配置监控信息 可以实时监测服务状态 当服务下线时
  • AntDB-T提升查询性能的关键之查询优化解析

    查询优化器 是提升查询效率非常重要的手段 本文将主要介绍 AntDB T数据库查询优化 的相关设计 AntDB T数据库是一款企业级通用分布式关系型数据库 而查询是AntDB T数据库管理系统中最关键 最吸引人的功能之一 每个生产数据库系统
  • FAM amine, 6-isomer,1313393-44-0,含有纯6-异构体的荧光团,6-FAM NH2

    产品名称 FAM amine 6 isomer 6 FAM NH2 中文名称 6 羧基荧光素 氨基 CAS 1313393 44 0 分子式 C27H26N2O6 分子量 474 51 纯度 95 结构式 产品描述 荧光素衍生物具有胺基 含
  • 自定义WheelView

    项目中用到一个比较觉得不错的控件 WheelView 即上下滚动View 它是继承ScrollView实现 在Android各版本上的效果都是如下 也许在git上有许多这样功能的控件 但个人认为这个控件实现的方式简单 比较让人容易理解 对自
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • java 员工绩效管理系统Myeclipse开发mysql数据库MVC结构serlvet编程计算机网页项目

    一 源码特点 java 员工绩效管理系统是一套完善的java web信息管理系统 对理解JSP java编程开发语言有帮助 系统采用serlvet dao bean 系统具有完整的源代码和数据库 系统主要采用B S模式开发 开发工具myec
  • 64.Oracle19cPDB的创建和删除

    1 创建PDB CREATE PLUGGABLE DATABASE DB CROSS ADMIN USER pdbadmin IDENTIFIED BY enmo 2023 ROLES dba DEFAULT TABLESPACE CROS
  • Linux中seLinux是什么?关闭会造成哪些影响?

    seLinux是一种安全增强型的Linux操作系统 其主要作用是强化系统的安全性和保护系统资源免受未经授权的访问和攻击 其提供了三种工作模式 分别是Disabled工作模式 Permissive工作模式和Enforcing工作模式 那么Li
  • CNN和TCN的区别和联系

    CNN 卷积神经网络 和TCN 时间卷积网络 都是神经网络的变体 用于处理不同类型的数据 以下是它们的主要区别和联系 区别 应用领域 CNN 主要用于处理图像数据 具有在空间维度上捕捉局部特征的能力 常用于计算机视觉任务 TCN 主要用于处
  • Python中的定时器用法:Timer定时器和schedule库

    目录 一 引言 二 Timer定时器 1 Timer定时器的原理 2 Timer定时器的使用方法 3 Timer定时器的实际应用案例 三 schedule库 1 schedule库的原理 2 schedule库的使用方法 3 schedul
  • 62.$ORACLE_HOME/.patch_storage是否可以删除

    1 此目录为是Oracle打补丁时被替换的文件的备份 是的 即使成功安装了补丁程序 也必须保留 ORACLE HOME patch storage目录 1 将临时补丁应用到Oracle主目录时 OPatch将补丁信息存储在 ORACLE H
  • Linux-----13、用户、组

    用户 组 一 用户管理 用户概念及作用 了解 用户 指的是Linux操作系统中用于管理系统或者服务的人 一问 管理系统到底在 管理什么 答 Linux下一切皆 文件 所以用户管理的是相应的文件 二问 如何管理 文件呢 答 文件基本管理 比如
  • 宿主机和容器

    宿主机 Host 和容器 Container 是 Docker 中的两个重要概念 描述了 Docker 环境中的两个主要部分 宿主机 Host 宿主机是指安装了 Docker 引擎 Docker Engine 的物理计算机或虚拟机 它是 D