如何構(gòu)建 Fedora 容器鏡像

2021-02-05    分類: 網(wǎng)站建設(shè)

隨著容器和容器技術(shù)的興起,現(xiàn)在所有主流的 Linux 發(fā)行版都提供了容器基礎(chǔ)鏡像。本文介紹了 Fedora 項目如何構(gòu)建其基本鏡像,同時還展示了如何使用它來創(chuàng)建分層圖像。

基礎(chǔ)和分層鏡像

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

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

  1. FROM?fedora:latest?

如何構(gòu)建基礎(chǔ)鏡像

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

構(gòu)建 rootfs

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

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

使用 rootfs 構(gòu)建基礎(chǔ)鏡像

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

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

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

讓我們使用 Koji 內(nèi)置的 Fedora rootfs 構(gòu)建一個基礎(chǔ)鏡像:

  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 生成的鏡像已經(jīng)可以被容器運行時使用才需要。

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

  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?

構(gòu)建分層鏡像

要構(gòu)建使用 Fedora 基礎(chǔ)鏡像的分層鏡像,只需在 FROM 行指令中指定 fedora:

  1. FROM?fedora:latest?

latest 標(biāo)記引用了最新的 Fedora 版本(編寫本文時是 Fedora 30)。但是可以使用鏡像的標(biāo)簽來使用其他版本。例如,F(xiàn)ROM fedora:31 將使用 Fedora 31 基礎(chǔ)鏡像。

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

新聞標(biāo)題:如何構(gòu)建 Fedora 容器鏡像
分享鏈接:http://m.kartarina.com/news/99362.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器響應(yīng)式網(wǎng)站做網(wǎng)站小程序開發(fā)網(wǎng)站設(shè)計公司軟件開發(fā)

廣告

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

成都網(wǎng)頁設(shè)計公司
主站蜘蛛池模板: 蜜色欲多人AV久久无码| 亚洲精品无码专区| 国产色无码专区在线观看| 亚洲精品无码精品mV在线观看| 久久水蜜桃亚洲av无码精品麻豆| 亚洲精品无码久久久久YW| 亚洲中文久久精品无码| 日日摸日日碰人妻无码| 无码人妻少妇久久中文字幕蜜桃| 无码av中文一区二区三区桃花岛| 亚洲成a人片在线观看无码| 人妻中文字幕AV无码专区| 国产午夜鲁丝无码拍拍| 国产精品爽爽va在线观看无码| 精品无码国产一区二区三区AV| 日韩A无码AV一区二区三区| 无码丰满熟妇juliaann与黑人 | 亚洲国产无套无码av电影| 亚洲AV无码一区二区三区电影 | 久久久久久精品无码人妻| 亚洲人成影院在线无码观看| 精品无码人妻一区二区三区 | 国产成人无码网站| 久久AV高潮AV无码AV| 亚洲国产无套无码av电影| 久久伊人中文无码| 影院无码人妻精品一区二区| 亚洲a∨无码一区二区| 最新亚洲春色Av无码专区| 亚洲另类无码一区二区三区| 一本天堂ⅴ无码亚洲道久久 | 国产精品国产免费无码专区不卡| 亚洲av无码电影网| 91精品久久久久久无码| 精品国产v无码大片在线观看| 久久午夜无码鲁丝片直播午夜精品| 国产精品午夜福利在线无码| 久久综合一区二区无码| 人妻系列AV无码专区| 久久精品成人无码观看56| 水蜜桃av无码一区二区|