天天看點

Podman - 下一代Linux容器工具

     podman是一個用于處理容器的開源Linux工具。 包括系統資料庫中的容器,例如docker.io和quay.io. 在本文中,将展示如何使用podman建構容器映像并從中建立容器。 接下來,我展示如何将圖像上傳到系統資料庫,最後,展示如何使用docker在非Linux系統上使用podman建立的完全相容的圖像建立容器。

     開始之前,快速了解項目名稱及徽标。 像展示的那樣,podman可以使用容器,但也适用于在同一主機上一起部署的容器,容器組。 (如果了解Kubernetes,就會熟悉podman的工作原理。)重要的是,一組海豹被稱為豆莢,因為上面有令人敬畏的豆莢标志。 不會在這裡讨論pods,的确它是該工具的一個很棒的功能。

足夠的背景,讓我們繼續前進。這裡使用的是 reshot linux 第一步是安裝podman。 像往常一樣,明智的第一步是運作更新,以獲得良好的系統:

 在系統是最新時,繼續安裝podman:

使用yum或apt-get來安裝和管理軟體。 準備podman,可使用别名docker = podman。 這意味着Linux系統将始終調用podman,即使習慣性地輸入docker也是如此。 出于研究目的,運作docker和podman來表明它們是相容的,為了區分,最好不要使用别名。 

 安裝後,從sudo podman版本開始檢視正在使用的版本。 這裡使用的是0.9.3.1版本:

$ sudo podman version
podman version 
           

     這裡以root身份運作podman,該指令永遠不需要root通路權限。 很快就會談到root通路權限。

接下來,運作podman  info 以擷取有關環境的一些資訊: 

$ sudo podman info
. . .
  registries:
  - docker.io
  - registry.fedoraproject.org
  - quay.io
  - registry.access.redhat.com
  - registry.centos.org
. . .
           

唯一細節是podman在系統上使用了五個系統資料庫。 正在嘗試加載容器映像,它首先在本地計算機上查找,然後按照列出的順序檢查其他系統資料庫。      使用下面的Dockerfile,并使用podman來建構一個圖像。 該檔案将Colossal Cave Adventure遊戲的源代碼複制到容器映像(WORKDIR和COPY指令)中,出于安全原因(RUN指令的前六行)安裝一些核心更新,以建構 代碼(接下來的五行RUN),最後建構代碼(RUN的最後一行):

FROM registry.centos.org/che-stacks/centos-stack-base
WORKDIR /usr/src/open-adventure
COPY ./open-adventure /usr/src/open-adventure
RUN sudo yum -y update && \
    sudo yum -y install kernel-headers && \
    sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && \
    sudo rpm -Uvh http://elrepo.org/linux/kernel/el7/x86_64/RPMS/elrepo-release--el7.elrepo.noarch.rpm && \
    sudo yum --enablerepo=elrepo-kernel -y install kernel-ml && \
    sudo yum --enablerepo=elrepo-kernel -y swap kernel-headers -- kernel-ml-headers && \
    sudo yum -y install centos-release-scl && \
    sudo yum -y install gcc && \
    sudo yum -y install make && \
    sudo yum -y install libedit-devel && \
    sudo yum -y install python-yaml && \
    sudo make
           
CMD tail -f /dev/null      

 用指令建立容器映像:

$ sudo podman build -t open-adventure:podman .
STEP : FROM registry.centos.org/che-stacks/centos-stack-base
Getting image source signatures
Copying blob sha256:f9ce27a295e879233c8fbbf9ab67944a10e1ce80da69a46f87c583082a1ff3bb
. . .
STEP : CMD tail -f /dev/null 
--> d996316fac25084c5fa4d62ff4cbebad39dd8913ca4aff46c53653589ec7
STEP : COMMIT open-adventure:podman
           

(一如既往,不要忘記建構指令末尾的點。)pull基本映像需要幾分鐘,尤其是第一次建構容器映像時。 這是鐵的資料,但根據我的經驗,使用podman建構映像似乎沒有比docker更快或更慢。

正如您所料,運作podman映像會顯示剛建構的映像:

$ sudo podman images
REPOSITORY                                         TAG                 IMAGE ID            CREATED              SIZE
localhost/open-adventure                           podman              a2b9a17504ac        About a minute ago   GB
registry.centos.org/che-stacks/centos-stack-base   latest 
           

請注意,localhost /已添加到圖像的名稱。 這告訴podman圖像位于本地計算機上的圖像緩存中。

接下來,我将從圖像中建立一個容器。 podman run --rm -it [我剛剛建立的圖像的名稱] / bin / bash。 這在容器啟動時運作bash shell。

$ podman run --rm -it open-adventure:podman /bin/bash
ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
[user@d767729eca88 open-adventure]$      

将localhost /添加到圖像名稱的開頭,可以工作,指出一點。  在容器内部進行bash提示,這個容器裡有Colossal Cave Adventure,正如podman建構圖像時編譯的那樣。 可以運作./advent并玩遊戲。 進入建築物内,吃點東西,喝點東西,然後退出遊戲。 諸如此類的事情。 這裡的要點是我建立了一個圖像,可以與任何想要玩遊戲的人分享。 當然,也可以建構包含有用軟體的圖像。 談到分享,我會把圖像放在quay.io的公共回購中。 首先,我将使用podman登入:

注意,把圖像推送到quay.io時,必須指定quay.io repo和使用者名(dougtidwell)作為遠端圖像名稱的一部分。

根據映像的基本作業系統,quay.io可能會掃描安全漏洞。 我使用未安裝任何核心更新的修改過的Dockerfile建構了标記為不安全的圖像。 該圖像有一些漏洞,quay.io給了我幫助我解決問題的建議。 我留下舊圖像來說明問題。 (關鍵是安全掃描非常酷。) 根據映像的基本作業系統,quay.io可能會掃描安全漏洞。 使用未安裝任何核心更新的修改過的Dockerfile建構了标記為不安全的圖像。 該圖像有一些漏洞,quay.io給出幫助解決問題的建議。 (關鍵是安全掃描非常酷。) 最後,為了結束示範,讓我們回到我的Mac并使用docker從quay.io中提取圖像。 請記住,podman隻是Linux,是以我們必須使用docker。 我在一分鐘前就在Linux上使用了相同的選項,我可以像在Linux上一樣運作該圖像并使用它:

$ docker run --rm -it open-adventure:podman /bin/bash
ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519       

image完全相容。 事實上,podman使用的一些庫也是docker的一部分。 在我們開始之前,請快速了解容器架構。 docker在Linux上作為守護程序運作。 這會産生一定的開銷,并且還需要任何想要建構容器映像的人具有root通路權限。 這可能會産生安全風險,尤其是當使用者知道docker run指令的--privileged選項時。 守護程序也扼殺了容器社群的創新。 如果要更改容器的工作方式,則需要更改docker守護程式并将這些更改推送到上遊。 沒有守護程序,容器基礎結構更加子產品化,更容易進行更改。 podman的無守護程序架構更加靈活和安全。

Podman - 下一代Linux容器工具

這是對podman的快速概述。 正如您所料,它是完全開源的,請檢視podman.io以擷取文檔,示範文稿,當然還有源代碼。 我們建議您在Linux系統上安裝該工具并使用它。 您可以從我的quay.io帳戶中提取我剛建立的容器圖像,并使用它來播放Colossal Cave Adventure。 喜歡使用下一代容器工具! the container image I just built from my quay.io account   謝謝!

轉載于:https://www.cnblogs.com/alpine-enterprise/p/10887961.html

繼續閱讀