第 6 章 使用容器


Docker 是一个开源项目,可在 Linux 容器内自动部署 应用程序,并提供将应用与其运行时依赖项打包到容器中的功能。Linux 容器支持快速应用程序部署、更简单的测试、维护和故障排除,同时提高安全性。如需更多信息,请参阅红帽客户门户网站上的 红帽系统上的 Docker 格式容器镜像入门 文章[1].
Docker 格式的容器由以下部分组成:
  • 容器 :应用程序沙盒。每个容器都基于包含所需配置数据的镜像。从镜像启动容器时,该镜像之上会添加一个可写层。每次提交容器时,都会添加一个新镜像层来存储您的更改。
  • Image: 从未修改的容器配置的静态快照。对容器所做的任何更改只能通过创建新镜像层来保存。每个镜像依赖于一个或多个父镜像。
  • 平台镜像 :无父镜像的镜像。平台镜像定义容器化应用程序要运行的运行时环境、软件包和工具。平台镜像不可写入,因此任何更改都会反映在其中堆栈复制的镜像中。有关如何从 Red Hat Satellite 访问 Red Hat Enterprise Linux 平台镜像的详情,请参考 例 6.1 “在 Satellite 中创建 Red Hat Enterprise Linux 容器”
  • Registry :包含可用于下载的镜像的公共或私有存档。一些注册表允许用户上传镜像,使其可供其他注册表使用。Red Hat Satellite 允许您从本地和外部 registry 导入镜像。Satellite 本身可以充当主机的镜像 registry,但主机无法将更改推送回注册表。如需更多信息,请参阅 第 6.1.1 节 “创建容器”
  • 标签 :用于区分存储库中的镜像的标记,通常由存储在镜像中的应用版本。存储库用于对容器 registry 中的类似镜像进行分组。镜像只具有唯一的字母数字字符标识符,因此以表单或 存储库:标签 的形式命名提供人类可读的方法来识别镜像。如需更多信息,请参阅 第 6.5 节 “使用容器标签”第 6.2 节 “管理软件仓库”
使用 Red Hat Satellite,您可以创建一个内部 registry,从各种源导入镜像并使用内容视图将其分发到容器(有关将镜像加载到内容视图的更多信息),请参阅 第 3.2 节 “将存储库添加到内容视图”。Satellite 支持创建一个或多个 Docker 计算资源,充当运行容器的服务器。这样,您可以导入镜像,根据此镜像启动容器,监控容器的活动,并将其状态提交到可进一步传播的新镜像层。

6.1. 管理容器

以下小节介绍了如何创建、查看、启动、停止和提交容器。

先决条件

在 Red Hat Satellite 中,您只能将容器部署到 Docker 供应商类型的计算资源上。因此,当您第一次尝试查看或创建容器时,Satellite 会提示您创建 Docker 计算资源。为此,首先创建一个容器主机,然后将此主机指定为计算资源。

过程 6.1. 要准备容器主机:

  1. 准备一个 Red Hat Enterprise Linux 7 服务器以托管镜像并在这个服务器上启用 docker 服务,如红帽客户门户上红帽系统 入门指南的 RHEL 7 入门指南中的 Docker in RHEL 7 部分所述[2].您可以在与 Satellite 服务器相同的机器上或独立部署容器主机。
    注意
    Red Hat Enterprise Linux 7 目前是容器主机唯一支持的系统。docker 软件包位于 rhel-7-server-extras-rpms 存储库中。Red Hat Enterprise Linux 6 系统目前不支持托管容器。
  2. 在容器主机上运行以下命令,以安装 Satellite 服务器的 CA 证书:
    rpm -Uvh https://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
    此处,satellite.example.com 是 Satellite 服务器的完全限定域名。如果容器主机已注册为 Satellite 主机,请跳过这一步。
  3. 根据容器主机的位置,执行以下任务:
    • 如果容器主机与 Satellite 服务器位于同一个机器上:
      1. 创建 docker 用户组,并将 foreman 用户添加到其中:
        # groupadd docker
        # usermod -aG docker foreman
      2. 修改 /etc/sysconfig/docker 文件中的 OPTIONS 变量,如下所示:
        OPTIONS='--selinux-enabled -G docker'
      3. 重启受影响的服务以应用更改:
        # systemctl restart docker.service
        # katello-service restart
    • 如果容器主机位于与 Satellite 服务器不同的机器上:
      1. 打开容器主机上的端口,以与 Satellite 服务器通信。要做到这一点,请修改 /etc/sysconfig/docker 文件中的 OPTIONS 变量,如下所示:
        OPTIONS='--selinux-enabled -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
        如果启用了 TLS,您可以使用端口 2376
      2. 重启 docker 服务并验证您的设置,如下所示:
        # systemctl restart docker.service
        # systemctl status docker.service

过程 6.2. 创建 Docker 计算资源:

  1. 确保 Satellite 服务器上启用了端口 5000。容器主机使用此端口从 Satellite 服务器上的内容视图拉取镜像。
  2. 按照 第 9.3.4 节 “计算资源” 所述创建计算资源。根据容器主机的位置指定资源 URL
    1. 如果容器主机与 Satellite 服务器位于同一个机器上,请将 unix://var/run/docker.sock 设置为资源 URL。
    2. 如果容器主机位于与 Satellite 服务器不同的机器上,以以下形式指定 URL:
      http://container_host_fqdn:2375
      在这里,container_host_fqdn 代表容器主机的完全限定域名,在容器主机上打开用于与 Satellite 通信的端口号可以是 2375,或者使用 TLS, 2376
  3. 单击 Test Connection,以测试容器主机是否可用。
  4. 单击 Submit 以创建计算资源。

6.1.1. 创建容器

当 Satellite 中至少有一个 Docker 计算资源时,您可以创建容器。要创建新容器,请按照 过程 6.3, “要创建容器,请执行以下操作:” 中介绍的步骤操作。有关如何监控现有容器的步骤,请参考 第 6.1.2 节 “监控容器”
要创建容器,您必须首先导入镜像,该镜像可以是平台镜像,也可以是之前创建的分层镜像。Satellite 支持以下镜像源:
  • 本地内容 :在创建容器时由 Content View 选项表示。此选项允许您从特定内容视图和生命周期环境中已存在于胶囊服务器上的存储库导入镜像。有关如何创建和填充本地 registry 的更多信息,请参阅 第 6.2 节 “管理软件仓库”
  • Docker Hub :允许您搜索 Docker Hub registry 并从中拉取镜像。确保您只拉取带有验证内容的可信镜像。
  • External Registry :允许您从之前创建的外部 registry 中导入镜像。有关在 Red Hat Satellite 中创建 registry 的更多信息,请参阅 第 6.3 节 “导入外部 registry”
注意
您无法更改现有容器的配置。要更改配置,您必须使用修改的设置创建替换容器,如 过程 6.3, “要创建容器,请执行以下操作:” 所述。因此,请确保可在您的工作流中替换容器。

过程 6.3. 要创建容器,请执行以下操作:

  1. 导航到 Containers New Container。或者,导航到 Containers All Containers,再单击 New container
  2. 在创建容器 前阶段,配置以下设置:
    • Compute 资源 选项卡上,从 Deployed on 下拉菜单中选择计算资源。有关计算资源的更多信息,请参阅 第 9.3.4 节 “计算资源”
    • Locations 选项卡上,选择新容器可用的位置。
    • Organizations 选项卡上,选择提供新容器的组织。
    Next 继续。
  3. 在创建容器的 Image 阶段,导入将充当容器基础的镜像。这可以是平台镜像,也可以是之前创建的分层镜像。从以下选项之一中选择:
    • 选择 Content View 选项卡以从生命周期环境中导入镜像。指定生命周期环境、内容视图、存储库、标签和胶囊服务器。
    • 选择 Docker hub 选项卡,以从 Docker Hub registry 中导入镜像。在为 Search 字段输入镜像名称后,Satellite 会自动搜索计算资源。单击查找镜图标以搜索 Docker Hub。从搜索结果列表中选择镜像,并从下拉列表中选择标签。
    • 选择 External registry 选项卡,以从现有 registry 中导入镜像。从下拉菜单中选择 registry,并根据镜像名称进行搜索。Satellite 使用所选镜像名称可用的标签填充 Tag 字段。如需更多信息,请参阅 第 6.3 节 “导入外部 registry”
    Next 继续。
  4. 在创建容器的 Configuration 阶段,设置以下参数:
    • 提供容器名称。
    • 指定要在容器内运行的命令。
    • 指定一个入口点,它是一个在容器启动时立即执行的命令。默认入口点是 /bin/sh -c
    • 为容器分配 CPU。例如: 0-2,16 代表 CPU 0、1、2 和 16。
    • 为容器定义 CPU 时间的相对共享。
    • 为容器指定内存限值。例如,512m 将容器内存用量限制为 512 MB。
    Next 继续。
  5. 在名为 Environment 的容器创建的最后一个阶段中,选择如果要为容器分配 pseudo-tty、attachPlan、STDER 和 STDOUT,请选择。单击 Add 环境变量,为容器创建自定义环境变量。选中 Run? 复选框,以在容器创建后自动启动容器。
  6. 单击 Submit 以创建容器。
创建容器后,Satellite 会显示容器元数据的摘要。默认情况下,新容器被禁用(除非您在创建容器时选择了 Run? 复选框)。有关如何启动容器的说明,请参阅 过程 6.5, “要启动或停止容器:”

例 6.1. 在 Satellite 中创建 Red Hat Enterprise Linux 容器

要在 Red Hat Satellite 中启用 Red Hat Enterprise Linux 容器,请执行以下操作:
  1. 创建自定义 registry,如 第 6.3 节 “导入外部 registry” 所述。指定 registry.access.redhat.com 作为 registry URL。
  2. 按照 第 6.1.1 节 “创建容器” 所述创建新容器。在容器创建阶段,导航到 External registry 选项卡,再选择上一步中创建的 registry。使用搜索字段查找 Red Hat Enterprise Linux 镜像所需的版本。继续执行 Configuration and Environment 阶段以完成容器。

6.1.2. 监控容器

Red Hat Satellite 提供了监控容器的状态以及其中运行的进程的方法。有些容器可以标记为 受管,这意味着它们是在 Satellite 环境中创建和调配的。
以下流程演示了如何列出所选机构的容器以及如何监控容器元数据。

过程 6.4. 要嵌入容器:

  1. 导航到 Containers All Containers
  2. Containers 页面上,每个 Docker 计算资源都有一个专用的选项卡。每个标签页都包含可用容器的表,以及每个容器的所选参数。选择您要检查的计算资源的选项卡。
  3. 要查看容器元数据,请点要检查的容器的名称。Satellite 显示容器属性的表。
  4. 在 processes 选项卡中,您可以查看当前在容器中运行的进程。点进程名称查看进程的元数据。
  5. 如果容器正在运行,您可以在 Logs 选项卡中查看其标准输出。如果您在创建容器时选择了 allocate a pseudo-tty 复选框,则控制台是交互式的。否则,它会显示容器启动时生成的初始标准输出。

6.1.3. 启动、提交和删除容器

默认禁用新容器。通过启用容器,您可以在计算资源中启动容器化应用的进程。然后,主机可以和 Web 应用与容器通信。以下流程演示了如何启动和停止容器:

过程 6.5. 要启动或停止容器:

  1. 导航到 Containers All Containers 以查看可用容器的列表。
  2. 点击您要启动的容器旁边的 Power On。启动容器后,按钮将变为 Power Off,这样就可以停止容器。这些操作等同于 docker startdocker stop 命令。
以下流程演示了如何提交容器以创建存储容器状态的新镜像层。

过程 6.6. 要提交容器:

  1. 导航到 Containers All Containers 以查看可用容器的列表。
  2. 单击您要提交的容器的名称。
  3. Commit。Satellite 会提示您:
    • 指定存储库名称。这可以是单个名称,也可以与用户名结合使用,如 user/my-rhel-image
    • 为镜像分配标签。
    • 提供您的联系信息。
    • 提供有关镜像的信息注释。
  4. 单击 Submit
注意
容器提交到原始镜像的存储库。例如,如果容器基于从 Docker Hub 中拉取的镜像,则提交的更改将推送回 Docker Hub。

过程 6.7. 要删除容器:

  1. 导航到 Containers All Containers 以查看可用容器的列表。
  2. 点您要删除的容器的名称。
  3. 单击 Delete
  4. 在警报框中,单击 OK 以删除该容器。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部