podman容器工具的具體使用
podman簡介
Podman是一個開源項目,可在大多數Linux平臺上使用並開源在GitHub上。Podman是一個無守護進程的容器引擎,用於在Linux系統上開發,管理和運行Open Container Initiative(OCI)容器和容器鏡像。Podman提供瞭一個與Docker兼容的命令行前端,它可以簡單地作為Docker cli,簡單地說你可以直接添加別名:alias docker = podman來使用podman。
Podman控制下的容器可以由root用戶運行,也可以由非特權用戶運行。Podman管理整個容器的生態系統,其包括pod,容器,容器鏡像,和使用libpod library的容器卷。Podman專註於幫助您維護和修改OCI容器鏡像的所有命令和功能,例如拉取和標記。它允許您在生產環境中創建,運行和維護從這些映像創建的容器。
官網:https://podman.io/
安裝文檔:https://github.com/containers/libpod/blob/master/install.md
配置參考:https://github.com/containers/image/blob/master/docs/containers-registries.conf.5.md
Podman和Docker的主要區別是什麼?
- dockers在實現CRI的時候,它需要一個守護進程,其次需要以root運行,因此這也帶來瞭安全隱患。
- podman不需要守護程序,也不需要root用戶運行,從邏輯架構上,比docker更加合理。
- 在docker的運行體系中,需要多個daemon才能調用到OCI的實現RunC。
- 在容器管理的鏈路中,Docker Engine的實現就是dockerd
- daemon,它在linux中需要以root運行,dockerd調用containerd,containerd調用containerd-shim,然後才能調用runC。顧名思義shim起的作用也就是“墊片”,避免父進程退出影響容器的運訓
- podman直接調用OCI,runtime(runC),通過common作為容器進程的管理工具,但不需要dockerd這種以root身份運行的守護進程。
- 在podman體系中,有個稱之為common的守護進程,其運行路徑通常是/usr/libexec/podman/conmon,它是各個容器進程的父進程,每個容器各有一個,common的父則通常是1號進程。podman中的common其實相當於docker體系中的containerd-shim。
podman安裝使用
使用centos官方yum源進行安裝
$ yum install -y podman $ podman version Version: 1.4.4 RemoteAPI Version: 1 Go Version: go1.10.3 OS/Arch: linux/amd64
配置鏡像加速
這裡使用阿裡雲鏡像加速器
cp /etc/containers/registries.conf{,.bak} cat > /etc/containers/registries.conf << EOF unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "uyah70su.mirror.aliyuncs.com" EOF
拉取鏡像
$ podman pull centos Trying to pull docker.io/library/centos...Getting image source signatures Copying blob 8ba884070f61 done Copying config 9f38484d22 done Writing manifest to image destination Storing signatures 9f38484d220fa527b1fb19747638497179500a1bed8bf0498eb788229229e6e1
運行容器
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/centos latest 9f38484d220f 4 months ago 209 MB $ podman run -itd --name test centos sleep 3600 1fc033bb22096008049709d70869d54e3fa9e4d72c6d098f4b5601fd6747a9b9 $ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1fc033bb2209 docker.io/library/centos:latest sleep 3600 7 seconds ago Up 6 seconds ago test
配置為別名
$ echo "alias docker=podman" >> .bashrc $ source .bashrc $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1fc033bb2209 docker.io/library/centos:latest sleep 3600 7 minutes ago Up 7 minutes ago test
相關工具
Buildah
Buildah專註於構建OCI鏡像。 Buildah的命令復制瞭Dockerfile中的所有命令。可以使用Dockerfiles構建鏡像,並且不需要任何root權限。 Buildah的最終目標是提供更低級別的coreutils界面來構建圖像。Buildah也支持非Dockerfiles構建鏡像,可以允許將其他腳本語言集成到構建過程中。 Buildah遵循一個簡單的fork-exec模型,不以守護進程運行,但它基於golang中的綜合API,可以存儲到其他工具中。雖然Podman也可以用戶構建Docker鏡像,單構建速度較慢。
Skopeo
Skopeo是一個工具,允許我們通過push,pull和復制鏡像來處理Docker和OC鏡像。
到此這篇關於podman容器工具的具體使用的文章就介紹到這瞭,更多相關podman使用內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 繼docker之後podman容器技術崛起
- Docker鏡像發佈到Docker Hub的實現方法
- Containerd容器運行yum安裝與二進制安裝
- centos搭建部署docker環境的詳細步驟
- CentOS 8.4安裝Docker的詳細教程