19.6. 使用 Buildah 从头开始创建镜像


您可以创建一个仅包含最小容器元数据的新容器,而不是从基础镜像开始。

从全新容器中创建镜像时,请考虑:

  • 您可以将不带依赖项的可执行文件复制到涂销空间镜像中,再进行一些配置设置才能使容器正常工作。
  • 您必须初始化 RPM 数据库并在容器中添加发行版本软件包以使用 dnfrpm 等工具。
  • 如果您添加很多软件包,请考虑使用标准 UBI 或最小 UBI 镜像而不是 scratch 镜像。

先决条件

  • container-tools 元数据包已安装。

流程

您可以向容器中添加 Web 服务 httpd ,并将其配置为运行。

  1. 创建一个空容器:

    # buildah from scratch
    working-container
    Copy to Clipboard Toggle word wrap
  2. 挂载 working-container 容器,并将挂载点路径保存到 scratchmnt 变量中:

    # scratchmnt=$(buildah mount working-container)
    
    
    # echo $scratchmnt
    /var/lib/containers/storage/overlay/be2eaecf9f74b6acfe4d0017dd5534fde06b2fa8de9ed875691f6ccc791c1836/merged
    Copy to Clipboard Toggle word wrap
  3. 在全新镜像中初始化 RPM 数据库,并添加 redhat-release 软件包:

    # dnf install -y --releasever=8 --installroot=$scratchmnt redhat-release
    Copy to Clipboard Toggle word wrap
  4. httpd 服务安装到 scratch 目录中:

    # dnf install -y --setopt=reposdir=/etc/yum.repos.d \
          --installroot=$scratchmnt \
          --setopt=cachedir=/var/cache/dnf httpd
    Copy to Clipboard Toggle word wrap
  5. 创建 $scratchmnt/var/www/html/index.html 文件:

    # mkdir -p $scratchmnt/var/www/html
    # echo "Your httpd container from scratch works!" > $scratchmnt/var/www/html/index.html
    Copy to Clipboard Toggle word wrap
  6. 配置 working-container 以直接从容器运行 httpd 守护进程:

    # buildah config --cmd "/usr/sbin/httpd -DFOREGROUND" working-container
    # buildah config --port 80/tcp working-container
    # buildah commit working-container localhost/myhttpd:latest
    Copy to Clipboard Toggle word wrap

验证

  1. 列出本地存储中的所有镜像:

    # podman images
    REPOSITORY                                 TAG     IMAGE ID      CREATED         SIZE
    localhost/myhttpd                          latest  08da72792f60  2 minutes ago   121 MB
    Copy to Clipboard Toggle word wrap
  2. 运行 localhost/myhttpd 镜像,并配置容器和主机系统之间的端口映射:

    # podman run -p 8080:80 -d --name myhttpd 08da72792f60
    Copy to Clipboard Toggle word wrap
  3. 测试 Web 服务器:

    # curl localhost:8080
    Your httpd container from scratch works!
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat