自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

[[276453]]

基礎(chǔ)和分層鏡像

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

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

  1. FROM fedora:latest 

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

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

構(gòu)建 rootfs

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

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

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

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

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

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

讓我們使用 Koji 內(nèi)置的 Fedora rootfs 構(gòu)建一個(gè)基礎(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)可以被容器運(yùn)行時(shí)使用才需要。

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

  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 版本(編寫本文時(shí)是 Fedora 30)。但是可以使用鏡像的標(biāo)簽來使用其他版本。例如,F(xiàn)ROM fedora:31 將使用 Fedora 31 基礎(chǔ)鏡像。

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

責(zé)任編輯:華軒 來源: Linux中國
相關(guān)推薦

2023-11-03 13:20:13

Kubernetes

2019-05-22 15:36:22

Linux容器鏡像

2019-10-30 12:00:02

Ansible容器與云容器鏡像

2021-05-13 09:07:03

容器云環(huán)境鏡像

2021-08-30 06:27:21

工具容器Docker

2014-10-11 11:30:43

CentOSDocker

2024-02-20 08:08:43

2010-02-02 14:01:35

Fedora yum

2009-12-28 15:44:45

Fedora rsyn

2019-03-28 10:20:09

容器鏡像系統(tǒng)運(yùn)維Linux

2023-10-30 11:01:37

Buildpack云原生

2022-01-05 18:19:30

容器鏡像Golang

2010-03-02 14:42:16

Fedora映像文件

2017-06-13 14:43:27

容器數(shù)據(jù)鏡像系統(tǒng)

2009-12-24 14:14:41

Fedora 9

2021-09-08 19:46:11

容器鏡像Linux

2009-12-28 17:23:54

Fedora Samb

2018-11-05 09:23:19

開源Docker容器鏡像

2009-12-21 16:00:09

安裝Fedora Co

2021-12-07 06:02:15

Redis Docker運(yùn)維
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)