日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Podman的概述与运用

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Podman的概述与运用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.Podman的簡介

2.安裝前準備

3.安裝podman

4.鏡像的概述與命令管理

5.容器的管理命令

6.對外發布容器示例

7. 容器共享卷

8.管理系統服務


1.Podman的簡介

  • linux中的容器是裝應用的

  • 容器就是將軟件打包成標準化單元,用于開發、交付和部署

  • 容器技術已經成為應用程序封裝和交付的核心技術

  • 優點

    – 相比于傳統的虛擬化技術,容器更加簡潔高效

    – 傳統虛擬機需要給每個VM安裝操作系統

    容器使用的共享公共庫和程序

    Podman 是一個開源的容器運行時項目,可在大多數 Linux 平臺上使用。Podman 提供與 Docker 非常相似的功能。正如前面提到的那樣,它不需要在你的系統上運行任何守護進程,并且它也可以在沒有 root 權限的情況下運行。

    Podman 可以管理和運行任何符合 OCI(Open Container Initiative)規范的容器和容器鏡像。Podman 提供了一個與 Docker 兼容的命令行前端來管理 Docker 鏡像

    Podman有何特點:

    • 1.沒有 Daemon (守護進程) 直接通過 OCI runtime(默認也是runc)來啟動容器,所以容器的進程是 podman 的子進程;

    • 2.采用類似于Linux中"fork/exec模型"相比較于”C/S模型”有一定的優勢。

    • 3.能夠以非 root 用戶的身份去運行容器

    • 4.引入注冊表的概念其內部包括docker.io在內的多個容器鏡像源,默認的有

    Podman VS Docker

    • (1) 模型對比

      • Podman: fork/exec 模型

      • Docker: C/S 模型

    • (2) 啟動模式:

      • 前者直接OCI containner runtime(runc)進行交互來創建container的

      • 后者通過API跟 Docker Engine(引擎)請求才會調用OCI container runtime(runc)來啟動一個container

    • (3) 守護進程

      • 前者容器不支持–restart策略但是可以通過編寫systemd服務來完成自啟動

      • 后者因有docker daemon,所以docker啟動的容器支持–restart策略

    • (4) 權限對比

      • 前者可以非root用戶創建容器

      • 后者必須使用root用戶來創建容器

    注:Podman 在 CentOS 7 的默認 Extras 存儲庫中可用,在 CentOS 8 和 Stream 的 AppStream 存儲庫中可用。

    虛擬化與容器的區別

    ? 鏡像是啟動容器的核心,鏡像由鏡像倉庫提供

    ? 在podman中容器是基于鏡像啟動的

    ? podman和容器的關系

    – podman是完整的一套容器管理系統

    – podman提供了一組命令,讓用戶更加方便直接地

    使用容器技術,而不需要過多關心底層內核技術

    podman所需軟件

    – 系統軟件,位于 rhel-8.2-x86_64-dvd 源中

    – 利用系統光盤,構建Yum倉庫

    2.安裝前準備

    # 禁用selinux ~]# vim /etc/selinux/config .... SELINUX=disabled ..... # 關閉翻火墻 ~]# systemctl stop firewalld && systemctl disable firewalld ? ## 搭建yum # 網絡tencent,yum ~]# /etc/yum.repos.d [AppStream] name=centos8 baseurl=https://mirrors.cloud.tencent.com/centos/8/AppStream/x86_64/os/ enabled=1 gpgcheck=0 [BaseoS] name=centos8 baseurl=https://mirrors.cloud.tencent.com/centos/8/BaseOS/x86_64/os/ enabled=1 gpgcheck=0 ? # 搭建本地yum # 掛載光盤并創建掛載點,掛載 ~]# mkdir /dvd && mount /dev/cdrom /dvd # 搭建本地yum ~]# vim /etc/yum.repos.d/dvd.repo [AppStream] name=AppStream baseurl=file:///dvd/AppStream enabled=1 gpgcheck=0 [BaseOS] name=BaseOS baseurl=file:///dvd/BaseOS enabled=1 gpgcheck=0 ? # 檢查 ~]# yum repolist -v .... Loading mirror speeds from cached hostfile Setting up Package Sacks pkgsack time: 0.010 Repo-id ? ? : AppStream Repo-name ? : AppStream Repo-revision: 8.5.2111 Repo-distro-tags: [cpe:/o:centos:centos:8]: CentOS 8 Repo-updated : Fri Dec 31 14:06:52 2021 Repo-pkgs ? : 6,533 Repo-size ? : 11 G Repo-baseurl : https://mirrors.cloud.tencent.com/centos/8/AppStream/x86_64/os/ Repo-expire : 21,600 second(s) (last: Sun Jan ?9 13:17:57 2022)Filter ? ? : read-only:present Repo-filename: /etc/yum.repos.d/dvd.repo ? Repo-id ? ? : BaseoS Repo-name ? : BaseoS Repo-revision: 8.5.2111 Repo-distro-tags: [cpe:/o:centos:centos:8]: CentOS 8 Repo-updated : Fri Dec 31 14:06:31 2021 Repo-pkgs ? : 1,898 Repo-size ? : 2.0 G Repo-baseurl : https://mirrors.cloud.tencent.com/centos/8/BaseOS/x86_64/os/ Repo-expire : 21,600 second(s) (last: Sun Jan ?9 13:17:57 2022)Filter ? ? : read-only:present Repo-filename: /etc/yum.repos.d/dvd.repo ......

    3.安裝podman

    注:centos7安裝之前要安裝docker,而8系列則可以直接按裝# 8系列有專門的模塊 # 查看module并安裝 ~]# yum module list ~]# yum -y module install container-tools

    4.鏡像的概述與命令管理

    1)鏡像的名稱標識

    – 每一個鏡像都對應唯一的鏡像 id

    – 鏡像名稱(文件名稱) + 標簽(路徑) = 唯一

    – 每一個鏡像都有標簽,如果沒寫就是默認標簽 latest

    – 我們在調用鏡像的時候,如果沒有指定標簽也是 latest

    命令作用說明示例
    podman search 關鍵字查找鏡像(需要能訪問互聯網)podman search httpd
    podman pull 鏡像名稱:標簽下載鏡像(需要能訪問互聯網)podman pull localhost/myos:latest
    podman load -i 備份文件.tar.gz導入鏡像podman load -i /root/httpd.tar.gz
    podman images查看鏡像查看出鏡像id
    podman rmi 鏡像名稱:鏡像標簽刪除鏡像podman rmi 2f5 #按照鏡像的ID值,刪除鏡像 podman rmi localhost/myos:nginx #刪除鏡像

    示例

    # 鏡像管理 ~]# podman load ? -i ? /root/httpd.tar.gz ? ? ? #導入鏡像 ~]# podman images ? ? #查看當前有哪些鏡像 ? # 鏡像刪除(鏡像id可以簡寫但要唯一性)) ~]# podman images ? ? ? ? ? #查看當前有哪些鏡像 ~]# podman ? rmi ? 2f5 ? ? ? #按照鏡像的ID值,刪除鏡像

    5.容器的管理命令

    命令作用說明示例
    podman run -選項 鏡像名稱:鏡像標簽 啟動命令創建容器
    podman ps [ -a 所有容器id ] [ -q 只顯示容器 id ]查看容器
    podman rm 容器id刪除容器podman rm -f nsdweb #強制刪除容器,或者先停止容器在刪除
    podman start/stop/restart 容器id容器管理命令啟動、停止、重啟
    podman exec -it 容器id 啟動命令進入容器

    run 的選項

    – podman help run

    – man podman-run

    ? run = 創建 + 啟動 + 進入

    podman run 命令的選項

    – 選項 -i,交互式

    – 選項 -t,終端

    – 選項 -d,后臺運行

    – 選項 -p,端口(本地端口:容器端口)

    – 選項 -v,映射文件(本地:/容器文件位置)

    – 選項 --name 容器名字

    ? 啟動容器,并進入容器

    podman run -it myos:latest /bin/bash

    ? 可以通過命令行提示符,判定自己是否進入容器了

    容器管理命令示例(字段意思我所寫的docker容器有寫)

    # 創建容器 ~]# podman run -it localhost/myos:httpd /bin/bash # 如果創建不了容器則需要創建/etc/resolv.conf文件 ~]# touch /etc/resolv.conf ? # 查看當前系統容器 ~]# podman ps -a ? # 利用容器id開啟容器(容器id可以簡寫但要唯一性) ~]# podman start 2b ? #進入容器 ~]# podman exec -it 2b /bin/bash ? # 利用容器id停止容器(容器id可以簡寫但要唯一性) ~]# podman stop 2b ? # 利用容器id刪除容器(容器id可以簡寫但要唯一性)~]# podman rm 2b ? # 創建放入后臺 ~]# podman run --name abc01 -itd localhost/myos:httpd /bin/bash

    6.對外發布容器示例

    ? 容器可以與宿主機的端口進行綁定

    ? 從而把宿主機變成對應的服務,不用關心容器的IP地址

    ? 我們使用 -p 參數把容器端口和宿主機端口綁定

    ? 同一宿主機端口只能綁定一個容器服務

    ? -p [可選IP]:宿主機端口:容器端口

    # 把宿主機變成 apache并放入后臺 ~]# podman run -itd -p 80:80 myos:httpd # 把宿主機變成 nginx并放入后臺 ~]# podman run -itd -p 80:80 myos:nginx ? # 容器放入后臺,綁定端口并設置名字 ~]# podman run --name nsdweb -p 80:80 ? ? -itd localhost/myos:httpd ? /bin/bash

    7. 容器共享卷

    ? podman容器不適合保存任何數據

    ? podman可以映射宿主機文件或目錄到容器中

    – 目標對象不存在就自動創建

    – 目標對象存在就直接覆蓋掉

    – 多個容器可以映射同一個目標對象來達到數據共享的目的

    ? 啟動容器時,使用 -v 映射參數

    # 格式 ~]# podman run -itd -v 宿主機對象:容器內對象 ? 鏡像名稱:標簽 # 示例 # 創建一個容器放入后臺,并映射端口與映射文件 ~]# podman run --name rqweb -p 80:80 -v /opt:/var/www/html -itd localhost/myos:httpd /bin/bash

    8.管理系統服務

    systemd一個更高效的系統&服務管理器

    – 開機服務并行啟動,各系統服務間的精確依賴

    – 服務目錄:/usr/lib/systemd/system/

    – 主要管理工具:systemctl

    ? 管理員服務文件默認路徑

    – /usr/lib/systemd/system/

    ? 生成服務啟動配置文件

    --files:生成文件類型

    podman generate systemd --name 容器名 --files

    ? 重新加載服務啟動配置文件

    systemctl daemon-reload

    示例:

    必須是相對路徑,當前路徑必須是/usr/lib/systemd/system

    ~]# cd /usr/lib/systemd/system ~]# podman ps -a # 注:容器必須是啟動狀態,且有名字(-name) ? # 自動生成container-rqweb.service ~]# podman generate systemd --name rqweb --files ~]# ls container-rqweb.service(其他名字就是 container-(名字).service) container-rqweb.service ? # 重新加載服務配置文件 ~]# systemctl daemon-reload ? # 測試 ~]# systemctl stop container-rqweb ~]# systemctl start container-rqweb #設置開機自啟 ~]# systemctl enable container-rqweb ?

    注:當前是centos8.2版本系統不完善有可能不成功

    總結

    以上是生活随笔為你收集整理的Podman的概述与运用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。