下一代容器技術podman簡介


PODMAN主要由紅帽發起和推動,是下一代的容器技術,包括如下三個模塊:Podman,Skopeo和Buildah
這三個工具都是符合OCI計划下的工具(github/containers)。主要是由RedHat推動的,他們配合可以完成Docker所有的功能,而且不需要守護程序或訪問有root權限的組,更加安全可靠,是下一代容器容器工具。

Podman

Podman可以替換Docker中了大多數子命令(RUN,PUSH,PULL等)。Podman不需要守護進程,而是使用用戶命名空間來模擬容器中的root,無需連接到具有root權限的套接字保證容器的體系安全。
Podman專注於維護和修改OCI鏡像的所有命令和功能,例如拉動和標記。它還允許我們創建,運行和維護從這些圖像創建的容器。

Buildah

Buildah用來構建OCI圖像。雖然Podman也可以用戶構建Docker鏡像,但是構建速度超慢,並且默認情況下使用vfs存儲驅動程序會耗盡大量磁盤空間。 buildah bud(使用Dockerfile構建)則會非常快,並使用覆蓋存儲驅動程序。

Buildah專注於構建OCI鏡像。 Buildah的命令復制了Dockerfile中的所有命令。可以使用Dockerfiles構建鏡像,並且不需要任何root權限。 Buildah的最終目標是提供更低級別的coreutils界面來構建圖像。Buildah也支持非Dockerfiles構建鏡像,可以允許將其他腳本語言集成到構建過程中。 Buildah遵循一個簡單的fork-exec模型,不以守護進程運行,但它基於golang中的綜合API,可以存儲到其他工具中。

Skopeo

Skopeo是一個工具,允許我們通過推、拉和復制鏡像來處理Docker和OC鏡像。

Podman和Buildah對比

Buildah構建容器,Podman運行容器,Skopeo傳輸容器鏡像。這些都是由Github容器組織維護的開源工具(github/containers)。這些工具都不需要運行守護進程,並且大多數情況下也不需要root訪問權限。
Podman和Buildah之間的一個主要區別是他們的容器概念。 Podman允許用戶創建"傳統容器"。雖然Buildah容器實際上只是為了允許將內容添加回容器圖像而創建的。一種簡單方法是buildah run命令模擬Dockerfile中的RUN命令,而podman run命令模擬功能中的docker run命令。

簡而言之,Buildah是創建OCI圖像的有效方式,而Podman允許我們使用熟悉的容器cli命令在生產環境中管理和維護這些圖像和容器。

安裝podman

基本上各大發行版都提供了二進制安裝包, 使用系統包管理就可以安裝:

Fedora, CentOS:
sudo yum -y install podman

Arch & Manjaro Linux:
sudo pacman -S podman

Ubuntu安裝:
sudo apt-get update -qq
sudo apt-get install -qq -y software-properties-common uidmap
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt-get update -qq
sudo apt-get -qq -y install podman

Docker到podman遷移步驟

首先,用podman替換了cron和CI作業中的所有docker實例。
完成后第一步后使用sysdig來捕獲對docker的引用,看看是否還有其他東西在調用docker:
sysdig | grep -w docker

如果您對性能敏感,這可能會大大降低系統速度。
現在就可以刪除docker了:

sudo:yum remove docker
或者
apt remove -y docker-ce

清理配置文件:
刪除/etc/apt/*或者/etc/yum.repos.d/*中指向Docker的源
刪除/etc/docker/*,/etc/default/docker和/var/lib/ docker中的任何遺留文件
刪除docker組:delgroup docker

總結
使用Podman,Skopeo和Buildah的新一代容器架構后,可以解決由於docker守護程序導致的啟動和安全問題。使用新架構后除了"沒有守護進程"和"不需要sudo訪問"之外,沒有發現很多不同之處。
構建的容器都位於用戶目錄下(~/.local/containers中)而不是全局的(在/var/lib/docker中),即面向用戶而不是面向守護進程。與Docker相比,podman pull會並行下載獲取所有層。

使用Podman運行Docker容器

1、使用Podman來Pull image

# podman pull ubuntu
# podman images

2、在容器內運行一個簡單的命令

# podman run ubuntu /bin/echo "Computing for Geeks"
Computing for Geeks

3、在Podman中搜索

$ sudo podman search httpd

在容器中運行shell:
# podman run -it ubuntu bash
# podman ps

4、標記images

你可以將自定義名稱添加到圖像中,以使其更直觀,並提醒你在設置中圖像的作用:

# podman tag 7698f282e524 webserver
# podman images

5、刪除圖像

# podman rmi localhost/webserver

6、檢查容器

# podman inspect 024a277cc474

7、刪除容器

# podman ps -a
# podman rm 024a277cc474
# podman rm $(podman ps -a -q)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM