2.4. 使用 source-to-image 实用程序构建应用程序镜像


Red Hat Software Collections 提供了 source-to-image 实用程序,您可以在 Red Hat Enterprise Linux 7 服务器中无需 OpenShift 的情况下使用它。

注意

source-to-image 实用程序仅适用于 Red Hat Enterprise Linux 7,且只适用于 docker 拉取的镜像。您不能将 podmansource-to-image 实用程序搭配使用。

构建过程包含以下三个基本元素,这些元素组合成最终的容器镜像:

在构建过程中,source-to-image 实用程序会创建一个 .tar 文件,其中包含源代码和脚本,然后将该文件流传输到构建器镜像中。

在您的系统中使用 source-to-image 工具:

  1. 订阅红帽软件集合.具体步骤,请参阅 获取 Red Hat Software Collections
  2. 启用 Red Hat Software Collections Server 存储库,它提供 source-to-image 软件包和 Red Hat Enterprise Linux 7 Server 软件仓库,其中包含 source-to-image 所需的 docker 软件包:

    # subscription-manager repos --enable rhel-server-rhscl-7-rpms --enable rhel-7-server-extras-rpms
    Copy to Clipboard Toggle word wrap
  3. 安装 source-to-image 软件包:

    # yum install source-to-image
    Copy to Clipboard Toggle word wrap
  4. 登录到容器 registry:

    # docker login registry.redhat.io
    Copy to Clipboard Toggle word wrap

    拉取构建器镜像:

    # docker pull registry.redhat.io/rhscl_image_name
    Copy to Clipboard Toggle word wrap

    从应用程序源代码构建应用程序镜像:

    # s2i build path_to_application_source_code_repository --context-dir=source_code_context_directory application_image_name
    Copy to Clipboard Toggle word wrap
  5. 使用 docker 运行生成的镜像。

例 2.3. 使用 source-to-image 实用程序从 Git 存储库构建 Python 3.8 应用程序

本例演示了如何使用 rhscl/python-38-rhel7 构建器镜像和 source-to-image 实用程序构建可从公共 Git 存储库中提供的测试应用。

  1. 登录到容器 registry:

    # docker login registry.redhat.io
    Copy to Clipboard Toggle word wrap
  2. 拉取 rhscl/python-38-rhel7 构建器镜像:

    # docker pull registry.redhat.io/rhscl/python-38-rhel7
    Copy to Clipboard Toggle word wrap
  3. 3.8/test/setup-test-app/ 目录中从 GitHub s2i-python 存储库构建测试应用:

    # s2i build https://github.com/sclorg/s2i-python-container.git --context-dir=3.8/test/setup-test-app/ registry.redhat.io/rhscl/python-38-rhel7 python-38-rhel7-app
    Copy to Clipboard Toggle word wrap

    这会生成新应用镜像 python-38-rhel7-app

  4. 运行生成的 python-38-rhel7-app 镜像:

    # docker run -d -p 8080:8080 --name example-app python-38-rhel7-app
    Copy to Clipboard Toggle word wrap
  5. http://localhost:8080/ 获取生成的示例文档:

    $ wget http://localhost:8080/
    Copy to Clipboard Toggle word wrap
  6. 停止容器:

    # docker stop example-app
    Copy to Clipboard Toggle word wrap

其它资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat