如何構建 Fedora 容器鏡像

2021-02-05    分類: 網站建設

隨著容器和容器技術的興起,現在所有主流的 Linux 發行版都提供了容器基礎鏡像。本文介紹了 Fedora 項目如何構建其基本鏡像,同時還展示了如何使用它來創建分層圖像。

基礎和分層鏡像

在看如何構建 Fedora 容器 基礎鏡像(base image)之前,讓我們定義基礎鏡像和 分層鏡像(layered image)。定義基礎鏡像的簡單方法是沒有父鏡像層的鏡像。但這具體意味著什么呢?這意味著基礎鏡像通常只包含操作系統的根文件系統基礎鏡像(rootfs)。基礎鏡像通常提供安裝軟件以創建分層鏡像所需的工具。

分層鏡像在基礎鏡像上添加了一組層,以便安裝、配置和運行應用。分層鏡像在 Dockerfile 中使用 FROM 指令引用基礎鏡像:

  1. FROM?fedora:latest?

如何構建基礎鏡像

Fedora 有一整套用于構建容器鏡像的工具。 其中包括 podman ,它不需要以 root 身份運行。

構建 rootfs

基礎鏡像主要由一個 tarball 構成。這個 tarball 包含一個 rootfs。有不同的方法來構建此 rootfs。Fedora 項目使用 kickstart 安裝方式以及 imagefactory 來創建這些 tarball。

在創建 Fedora 基礎鏡像期間使用的 kickstart 文件可以在 Fedora 的構建系統 Koji 中找到。 Fedora-Container-Base 包重新組合了所有基礎鏡像的構建版本。如果選擇了一個構建版本,那么可以訪問所有相關文件,包括 kickstart 文件。查看 示例 ,文件末尾的 %packages 部分定義了要安裝的所有軟件包。這就是讓軟件放在基礎鏡像中的方法。

使用 rootfs 構建基礎鏡像

rootfs 完成后,構建基礎鏡像就很容易了。它只需要一個包含以下指令的 Dockerfile:

  1. FROM?scratch?
  2. ADD?layer.tar?/?
  3. CMD?["/bin/bash"]?

這里的重要部分是 FROM scratch 指令,它會創建一個空鏡像。然后,接下來的指令將 rootfs 添加到鏡像,并設置在運行鏡像時要執行的默認命令。

讓我們使用 Koji 內置的 Fedora rootfs 構建一個基礎鏡像:

  1. $?curl?-o?fedora-rootfs.tar.xz?https://kojipkgs.fedoraproject.org/packages/Fedora-Container-Base/Rawhide/20190902.n.0/images/Fedora-Container-Base-Rawhide-20190902.n.0.x86_64.tar.xz?
  2. $?tar?-xJvf?fedora-rootfs.tar.xz?51c14619f9dfd8bf109ab021b3113ac598aec88870219ff457ba07bc29f5e6a2/layer.tar??
  3. $?mv?51c14619f9dfd8bf109ab021b3113ac598aec88870219ff457ba07bc29f5e6a2/layer.tar?layer.tar?
  4. $?printf?"FROM?scratch\nADD?layer.tar?/\nCMD?[\"/bin/bash\"]"?>?Dockerfile?
  5. $?podman?build?-t?my-fedora?.?
  6. $?podman?run?-it?--rm?my-fedora?cat?/etc/os-release?

需要從下載的存檔中提取包含 rootfs 的 layer.tar 文件。這在 Fedora 生成的鏡像已經可以被容器運行時使用才需要。

因此,使用 Fedora 生成的鏡像,獲得基礎鏡像會更容易。讓我們看看它是如何工作的:

  1. $?curl?-O?https://kojipkgs.fedoraproject.org/packages/Fedora-Container-Base/Rawhide/20190902.n.0/images/Fedora-Container-Base-Rawhide-20190902.n.0.x86_64.tar.xz?
  2. $?podman?load?--input?Fedora-Container-Base-Rawhide-20190902.n.0.x86_64.tar.xz?
  3. $?podman?run?-it?--rm?localhost/fedora-container-base-rawhide-20190902.n.0.x86_64:latest?cat?/etc/os-release?

構建分層鏡像

要構建使用 Fedora 基礎鏡像的分層鏡像,只需在 FROM 行指令中指定 fedora:

  1. FROM?fedora:latest?

latest 標記引用了最新的 Fedora 版本(編寫本文時是 Fedora 30)。但是可以使用鏡像的標簽來使用其他版本。例如,FROM fedora:31 將使用 Fedora 31 基礎鏡像。

Fedora 支持將軟件作為容器來構建并發布。這意味著你可以維護 Dockerfile 來使其他人可以使用你的軟件。關于在 Fedora 中成為容器鏡像維護者的更多信息,請查看 Fedora 容器指南 。

新聞標題:如何構建 Fedora 容器鏡像
文章URL:http://m.kartarina.com/news12/99362.html

成都網站建設公司_創新互聯,為您提供品牌網站建設網站排名網站改版做網站企業網站制作關鍵詞優化

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營
主站蜘蛛池模板: 亚洲精品无码av中文字幕| 国产成人精品无码播放| 精品无码一区在线观看| 97碰碰碰人妻视频无码 | 无码人妻精品一区二区三18禁 | 免费无码中文字幕A级毛片| 亚洲av无码专区在线电影天堂| 国产午夜精华无码网站| 中文字幕av无码一二三区电影| 成年无码av片在线| 成年男人裸j照无遮挡无码| 久久无码av三级| 亚洲中文字幕伊人久久无码| 性生交片免费无码看人| 水蜜桃av无码一区二区| 国产午夜无码专区喷水| 无码h黄肉3d动漫在线观看| 精品亚洲A∨无码一区二区三区| 精品久久久久久无码国产| 最新亚洲人成无码网站| 人禽无码视频在线观看| 无码伊人66久久大杳蕉网站谷歌| 国产精品无码v在线观看| 国产精品国产免费无码专区不卡| AV无码久久久久不卡蜜桃| 日韩精品无码一区二区三区不卡| 国产精品无码A∨精品影院| 国产色无码专区在线观看| 国产日韩精品无码区免费专区国产| 国产丰满乱子伦无码专| 精品无码国产AV一区二区三区| 久久精品无码专区免费青青| 无码人妻精品一区二区三18禁| 超清无码熟妇人妻AV在线电影| av无码人妻一区二区三区牛牛| 亚洲AV无码专区国产乱码电影| 日韩人妻无码一区二区三区久久99| 国产亚洲美日韩AV中文字幕无码成人| 精品无码黑人又粗又大又长 | 无码中文字幕一区二区三区| 亚洲成av人片不卡无码|