【网址收藏】podman安装及使用简单介绍
什么是 Podman ?
Podman 是一個開源的容器運行時項目,可在大多數 Linux 平臺上使用。Podman 提供與 Docker 非常相似的功能。正如前面提到的那樣,它不需要在你的系統上運行任何守護進程,并且它也可以在沒有 root 權限的情況下運行。
Podman 可以管理和運行任何符合 OCI(Open Container Initiative)規范的容器和容器鏡像。Podman 提供了一個與 Docker 兼容的命令行前端來管理 Docker 鏡像。
Podman 官網地址:https://podman.io/
 Podman 項目地址:https://github.com/containers/libpod
 安裝 Podman
 Podman 目前已支持大多數發行版本通過軟件包來進行安裝,下面我們來舉幾個常用發行版本的例子。
Fedora / CentOS
 $ sudo yum -y install 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
 MacOS
 $ brew cask install podman
 RHEL 7
 $ sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
 $ sudo yum -y install podman
 Arch Linux
 $ sudo pacman -S podman
 更多系統的安裝方法,可參考官方文檔:https://github.com/containers/libpod/blob/master/install.md
使用 Podman
 使用 Podman 非常的簡單,Podman 的指令跟 Docker 大多數都是相同的。下面我們來看幾個常用的例子:
運行一個容器
 $ podman run -dt -p 8080:8080/tcp 
 -e HTTPD_VAR_RUN=/var/run/httpd 
 -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d 
 -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf 
 -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ 
 registry.fedoraproject.org/f27/httpd /usr/bin/run-httpd
 列出運行的容器
 $ podman ps -a
 分析一個運行的容器
 $ podman inspect -l | grep IPAddress":
 “SecondaryIPAddresses”: null,
 “IPAddress”: “”,
 查看一個運行中容器的日志
 $ sudo podman logs --latest
 10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] “GET / HTTP/1.1” 200 612 “-” “curl/7.55.1” “-”
 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] “GET / HTTP/1.1” 200 612 “-” “curl/7.55.1” “-”
 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] “GET / HTTP/1.1” 200 612 “-” “curl/7.55.1” “-”
 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] “GET / HTTP/1.1” 200 612 “-” “curl/7.55.1” “-”
 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] “GET / HTTP/1.1” 200 612 “-” “curl/7.55.1” “-”
 查看一個運行容器中的進程資源使用情況
 $ sudo podman top <container_id>
 UID PID PPID C STIME TTY TIME CMD
 0 31873 31863 0 09:21 ? 00:00:00 nginx: master process nginx -g daemon off;
 101 31889 31873 0 09:21 ? 00:00:00 nginx: worker process
 停止一個運行中的容器
 $ sudo podman stop --latest
 刪除一個容器
 $ sudo podman rm --latest
 以上這些特性基本上都和 Docker 一樣,Podman 除了兼容這些特性外,還支持了一些新的特性。
給容器設置一個檢查點
 $ sudo podman container checkpoint <container_id>
 需要 CRIU 3.11 以上版本支持,CRIU 項目地址:https://criu.org/
根據檢查點位置恢復容器
 $ sudo podman container restore <container_id>
 遷移容器
 Podman 支持將容器從一臺機器遷移到另一臺機器。
首先,在源機器上對容器設置檢查點,并將容器打包到指定位置。
$ sudo podman container checkpoint <container_id> -e /tmp/checkpoint.tar.gz
 $ scp /tmp/checkpoint.tar.gz <destination_system>:/tmp
 其次,在目標機器上使用源機器上傳輸過來的打包文件對容器進行恢復。
$ sudo podman container restore -i /tmp/checkpoint.tar.gz
 配置別名
 如果習慣了使用 Docker 命令,可以直接給 Podman 配置一個別名來實現無縫轉移。你只需要在 .bashrc 下加入以下行內容即可:
$ echo “alias docker=podman” >> .bashrc
 $ source .bashrc
 Podman 如何實現開機重啟容器
 由于 Podman 不再使用守護進程管理服務,所以不能通過守護進程去實現自動重啟容器的功能。那如果要實現開機自動重啟容器,又該如何實現呢?
其實方法很簡單,現在大多數系統都已經采用 Systemd 作為守護進程管理工具。這里我們就可以使用 Systemd 來實現 Podman 開機重啟容器,這里我們以啟動一個 Nginx 容器為例子。
首先,我們先運行一個 Nginx 容器。
$ sudo podman run -t -d -p 80:80 --name nginx nginx
 然后,在建立一個 Systemd 服務配置文件。
$ vim /etc/systemd/system/nginx_container.service
[Unit]
 Description=Podman Nginx Service
 After=network.target
 After=network-online.target
[Service]
 Type=simple
 ExecStart=/usr/bin/podman start -a nginx
 ExecStop=/usr/bin/podman stop -t 10 nginx
 Restart=always
[Install]
 WantedBy=multi-user.target
 接下來,啟用這個 Systemd 服務。
$ sudo systemctl daemon-reload
 $ sudo systemctl enable nginx_container.service
 $ sudo systemctl start nginx_container.service
 服務啟用成功后,我們可以通過 systemctl status 命令查看到這個服務的運行狀況。
$ sudo systemctl status nginx_container.service
 ● nginx_container.service - Podman Nginx Service
 Loaded: loaded (/etc/systemd/system/nginx_container.service; enabled; vendor preset: disabled)
 Active: active (running) since Sat 2019-08-20 20:59:26 UTC; 1min 41s ago
 Main PID: 845 (podman)
 Tasks: 16 (limit: 4915)
 Memory: 37.6M
 CGroup: /system.slice/nginx_container.service
 └─845 /usr/bin/podman start -a nginx
Aug 20 20:59:26 Ubuntu-dev.novalocal systemd[1]: Started Podman Nginx Service.
 之后每次系統重啟后 Systemd 都會自動啟動這個服務所對應的容器。
其它相關工具
 Podman 只是 OCI 容器生態系統計劃中的一部分,主要專注于幫助用戶維護和修改符合 OCI 規范的容器鏡像。其它的組件還有 Buildah、Skopeo 等。
參考鏈接:
 再見 Docker,是時候擁抱下一代容器工具了
總結
以上是生活随笔為你收集整理的【网址收藏】podman安装及使用简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: ventory制作U盘启动盘
- 下一篇: 【网址收藏】VMware虚拟机安装Win
