<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Podman常用命令總結(jié)

          共 15367字,需瀏覽 31分鐘

           ·

          2022-01-04 19:51

          Podman簡(jiǎn)介

          什么是Podman?

          Podman 是一個(gè)開(kāi)源的容器運(yùn)行時(shí)項(xiàng)目,可在大多數(shù) Linux 平臺(tái)上使用。

          Podman 提供與 Docker 非常相似的功能。正如前面提到的那樣,它不需要在你的系統(tǒng)上運(yùn)行任何守護(hù)進(jìn)程,并且它也可以在沒(méi)有 root 權(quán)限的情況下運(yùn)行。

          Podman 可以管理和運(yùn)行任何符合 OCI(Open Container Initiative)規(guī)范的容器和容器鏡像。Podman 提供了一個(gè)與 Docker 兼容的命令行前端來(lái)管理 Docker 鏡像。

          Podman 官網(wǎng)地址:https://podman.io/

          Podman和Docker的主要區(qū)別是什么?
          • dockers在實(shí)現(xiàn)CRI的時(shí)候,它需要一個(gè)守護(hù)進(jìn)程,其次需要以root運(yùn)行,因此這也帶來(lái)了安全隱患。

          • podman不需要守護(hù)程序,也不需要root用戶運(yùn)行,從邏輯架構(gòu)上,比docker更加合理。

          • 在docker的運(yùn)行體系中,需要多個(gè)daemon才能調(diào)用到OCI的實(shí)現(xiàn)RunC。

          • 在容器管理的鏈路中,Docker Engine的實(shí)現(xiàn)就是dockerd

          • daemon,它在linux中需要以root運(yùn)行,dockerd調(diào)用containerd,containerd調(diào)用containerd-shim,然后才能調(diào)用runC。顧名思義shim起的作用也就是“墊片”,避免父進(jìn)程退出影響容器的運(yùn)訓(xùn)

          • podman直接調(diào)用OCI,runtime(runC),通過(guò)common作為容器進(jìn)程的管理工具,但不需要dockerd這種以root身份運(yùn)行的守護(hù)進(jìn)程。

          • 在podman體系中,有個(gè)稱之為common的守護(hù)進(jìn)程,其運(yùn)行路徑通常是/usr/libexec/podman/conmon,它是各個(gè)容器進(jìn)程的父進(jìn)程,每個(gè)容器各有一個(gè),common的父則通常是1號(hào)進(jìn)程。podman中的common其實(shí)相當(dāng)于docker體系中的containerd-shim。

          圖中所體現(xiàn)的事情是,podman不需要守護(hù)進(jìn)程,而dorker需要守護(hù)進(jìn)程。在這個(gè)圖的示意中,dorcker的containerd-shim與podman的common被歸在Container一層。

          Podman的使用與docker有什么區(qū)別?

          podman的定位也是與docker兼容,因此在使用上面盡量靠近docker。在使用方面,可以分成兩個(gè)方面來(lái)說(shuō),一是系統(tǒng)構(gòu)建者的角度,二是使用者的角度。

          在系統(tǒng)構(gòu)建者方面,用podman的默認(rèn)軟件,與docker的區(qū)別不大,只是在進(jìn)程模型、進(jìn)程關(guān)系方面有所區(qū)別。如果習(xí)慣了docker幾個(gè)關(guān)聯(lián)進(jìn)程的調(diào)試方法,在podman中則需要適應(yīng)。可以通過(guò)pstree命令查看進(jìn)程的樹(shù)狀結(jié)構(gòu)。總體來(lái)看,podman比docker要簡(jiǎn)單。由于podman比docker少了一層daemon,因此重啟的機(jī)制也就不同了。

          在使用者方面,podman與docker的命令基本兼容,都包括容器運(yùn)行時(shí)(run/start/kill/ps/inspect),本地鏡像(images/rmi/build)、鏡像倉(cāng)庫(kù)(login/pull/push)等幾個(gè)方面。因此podman的命令行工具與docker類似,比如構(gòu)建鏡像、啟停容器等。甚至可以通過(guò)alias docker=podman可以進(jìn)行替換。因此,即便使用了podman,仍然可以使用docker.io作為鏡像倉(cāng)庫(kù),這也是兼容性最關(guān)鍵的部分。

          Podman常用命令

          容器
          podman?run?????????#創(chuàng)建并啟動(dòng)容器??
          podman?start???????#啟動(dòng)容器??
          podman?ps??????????#查看容器??
          podman?stop????????#終止容器??
          podman?restart?????#重啟容器??
          podman?attach??????#進(jìn)入容器??
          podman?exec????????#進(jìn)入容器??
          podman?export??????#導(dǎo)出容器??
          podman?import??????#導(dǎo)入容器快照??
          podman?rm??????????#刪除容器??
          podman?logs????????#查看日志??
          鏡像
          podman?search?????????????#檢索鏡像??
          docke?pull????????????????#獲取鏡像??
          podman?images?????????????#列出鏡像??
          podman?image?Is???????????#列出鏡像??
          podman?rmi????????????????#刪除鏡像??
          podman?image?rm???????????#刪除鏡像??
          podman?save???????????????#導(dǎo)出鏡像??
          podman?load???????????????#導(dǎo)入鏡像??
          podmanfile????????????????#定制鏡像(三個(gè))??
          ????podman?build??????????????#構(gòu)建鏡像??
          ????podman?run??????????????#運(yùn)行鏡像??
          ????podmanfile??????????????#常用指令(四個(gè))??
          ????????COPY????????????????????#復(fù)制文件??
          ????????ADD?????????????????????#高級(jí)復(fù)制??
          ????????CMD?????????????????????#容器啟動(dòng)命令??
          ????????ENV?????????????????????#環(huán)境變量??
          ????????EXPOSE??????????????????#暴露端口??

          部署Podman

          //安裝podman??
          [root@localhost?~]#?yum?-y?install?podman??
          ??
          //倉(cāng)庫(kù)配置??
          [root@localhost?~]#?vim?/etc/containers/registries.conf??
          [registries.search]??
          registries?=?['registry.access.redhat.com',?'registry.redhat.io',?'docker.io']?//這個(gè)是查找,從這三個(gè)地方查找,如果只留一個(gè),則只在一個(gè)源里查找??
          unqualified-search-registries?=?["registry.fedoraproject.org",?"registry.access.redhat.com",?"registry.centos.org",?"docker.io"]?//這里也要改為一個(gè)??
          ??
          [registries.insecure]??
          registries?=?[10.0.0.1]???//這里寫(xiě)那些http的倉(cāng)庫(kù),比如harbor??
          ??
          //配置加速器??
          [registries.search]??
          registries?=?['https://l9h8fu9j.mirror.aliyuncs.com','docker.io']

          使用Podman

          使用 Podman 非常的簡(jiǎn)單,Podman 的指令跟 Docker 大多數(shù)都是相同的。下面我們來(lái)看幾個(gè)常用的例子:

          運(yùn)行一個(gè)容器
          [root@localhost?~]#?podman?run?-d?--name?httpd?docker.io/library/httpd??
          Trying?to?pull?docker.io/library/httpd...??
          Getting?image?source?signatures??
          Copying?blob?e5ae68f74026?done????
          Copying?blob?d3576f2b6317?done????
          Copying?blob?bc36ee1127ec?done????
          Copying?blob?f1aa5f54b226?done????
          Copying?blob?aa379c0cedc2?done????
          Copying?config?ea28e1b82f?done????
          Writing?manifest?to?image?destination??
          Storing?signatures??
          0492e405b9ecb05e6e6be1fec0ac1a8b6ba3ff949df259b45146037b5f355035??
          ??
          //查看鏡像??
          [root@localhost?~]#?podman?images??
          REPOSITORY??????????????????TAG??????IMAGE?ID???????CREATED???????SIZE??
          docker.io/library/httpd?????latest???ea28e1b82f31???11?days?ago???148?MB??
          列出運(yùn)行的容器
          [root@localhost?~]#?podman?ps??
          CONTAINER?ID??IMAGE?????????????????????????????COMMAND???????????CREATED?????????????STATUS?????????????????PORTS??NAMES??
          0492e405b9ec??docker.io/library/httpd:latest????httpd-foreground??About?a?minute?ago??Up?About?a?minute?ago?????????httpd??

          注意:如果在ps命令中添加-a,Podman 將顯示所有容器。

          檢查正在運(yùn)行的容器

          您可以“檢查”正在運(yùn)行的容器的元數(shù)據(jù)和有關(guān)其自身的詳細(xì)信息。我們甚至可以使用 inspect 子命令查看分配給容器的 IP 地址。由于容器以無(wú)根模式運(yùn)行,因此未分配 IP 地址,并且該值將在檢查的輸出中列為“無(wú)”。

          [root@localhost?~]#?podman?inspect?-l?|?grep?IPAddress\":???
          ????????????"SecondaryIPAddresses":?null,???
          ????????????"IPAddress":?"10.88.0.5",??
          ??
          [root@localhost?~]#?curl?10.88.0.5??

          It?works!

          ??

          注意:-l 是最新容器的便利參數(shù)。您還可以使用容器的 ID 代替 -l。

          查看一個(gè)運(yùn)行中容器的日志
          選項(xiàng)??
          ????--latest????????#最近的??
          ??????
          [root@localhost?~]#?podman?logs?--latest??
          AH00558:?httpd:?Could?not?reliably?determine?the?server's?fully?qualified?domain?name,?using?10.88.0.5.?Set?the?'ServerName'?directive?globally?to?suppress?this?message??
          AH00558:?httpd:?Could?not?reliably?determine?the?server'
          s?fully?qualified?domain?name,?using?10.88.0.5.?Set?the?'ServerName'?directive?globally?to?suppress?this?message??
          [Mon?Dec?13?15:17:53.690844?2021]?[mpm_event:notice]?[pid?1:tid?140665160166720]?AH00489:?Apache/2.4.51?(Unix)?configured?--?resuming?normal?operations??
          [Mon?Dec?13?15:17:53.690946?2021]?[core:notice]?[pid?1:tid?140665160166720]?AH00094:?Command?line:?'httpd?-D?FOREGROUND'??
          10.88.0.1?-?-?[13/Dec/2021:15:19:48?+0000]?"GET?/?HTTP/1.1"?200?45??
          10.88.0.1?-?-?[13/Dec/2021:15:20:47?+0000]?"GET?/?HTTP/1.1"?200?45??

          查看一個(gè)運(yùn)行容器中的進(jìn)程資源使用情況

          可以使用top觀察容器中的 nginx pid

          語(yǔ)法:

          ????podman?top?????
          [root@localhost?~]#?podman?top?httpd??
          USER???????PID???PPID???%CPU????ELAPSED????????????TTY???TIME???COMMAND??
          root???????1?????0??????0.000???15m38.599711321s?????????0s?????httpd?-DFOREGROUND???
          www-data???7?????1??????0.000???15m38.599783256s?????????0s?????httpd?-DFOREGROUND???
          www-data???8?????1??????0.000???15m38.599845342s?????????0s?????httpd?-DFOREGROUND???
          www-data???9?????1??????0.000???15m38.599880444s?????????0s?????httpd?-DFOREGROUND??

          停止一個(gè)運(yùn)行中的容器

          [root@localhost?~]#?podman?stop?--latest??
          2f3edf712621d3a41e03fa8c7f6a5cdba56fbbad43a7a59ede26cc88f31006c4??
          [root@localhost?~]#?podman?ps??
          CONTAINER?ID??IMAGE??COMMAND??CREATED??STATUS??PORTS??NAMES??
          刪除一個(gè)容器
          [root@localhost?~]#?podman?rm?--latest??
          2f3edf712621d3a41e03fa8c7f6a5cdba56fbbad43a7a59ede26cc88f31006c4??
          [root@localhost?~]#?podman?ps?-a??
          CONTAINER?ID??IMAGE??COMMAND??CREATED??STATUS??PORTS??NAMES??

          以上這些特性基本上都和 Docker 一樣,Podman 除了兼容這些特性外,還支持了一些新的特性

          上傳鏡像

          例如,如果我們想在 docker.io 上分享我們新建的 Nginx 容器鏡像,這很容易。首先登錄碼頭:

          [root@localhost?nginx]#?tree???
          .??
          ├──?Dockerfile??
          └──?files??
          ????└──?nginx-1.20.1.tar.gz??
          ??
          [root@localhost?nginx]#?cat?Dockerfile???
          FROM?docker.io/library/centos??
          ??
          ENV?PATH?/usr/local/nginx/sbin:$PATH??
          ADD?files/nginx-1.20.1.tar.gz?/usr/src??
          RUN?useradd?-r?-M?-s?/sbin/nologin?nginx?&&?\??
          ????yum?-y?install?pcre-devel?openssl?openssl-devel?gd-devel?gcc?gcc-c++?make?&&?\??
          ????mkdir?-p?/var/log/nginx?&&?\??
          ????cd?/usr/src/nginx-1.20.1?&&?\??
          ????./configure?\??
          ????--prefix=/usr/local/nginx?\??
          ????--user=nginx?\??
          ????--group=nginx?\??
          ????--with-debug?\??
          ????--with-http_ssl_module?\??
          ????--with-http_realip_module?\??
          ????--with-http_image_filter_module?\??
          ????--with-http_gunzip_module?\??
          ????--with-http_gzip_static_module?\??
          ????--with-http_stub_status_module?\??
          ????--http-log-path=/var/log/nginx/access.log?\??
          ????--error-log-path=/var/log/nginx/error.log?&&?\??
          ??make?&&?make?install??
          ??
          CMD?["nginx","-g","daemon?off"]??
          [root@localhost?nginx]#?podman?build?-t?nginx?.??
          //?修改鏡像名??
          ?[root@localhost?~]#?podman?tag?docker.io/library/nginx:latest?docker.io/1314444/test:latest??
          ??
          //?登錄并上傳鏡像??
          [root@localhost?~]#?podman?login?docker.io?//?需要告訴其要登錄到docker倉(cāng)庫(kù)??
          [root@localhost?~]#?podman?login?docker.io??
          Username:?1314444????????#賬戶??
          Password:?********????????#密碼??
          Login?Succeeded!??
          ??
          [root@localhost?nginx]#?podman?push?docker.io/1314444/test:latest??//上傳鏡像??
          Getting?image?source?signatures??
          Copying?blob?38c40d6c2c85?done??
          Copying?blob?fee76a531659?done??
          Copying?blob?c2adabaecedb?done??
          Copying?config?7f3589c0b8?done??
          Writing?manifest?to?image?destination??
          Copying?config?7f3589c0b8?done??
          Writing?manifest?to?image?destination??
          Storing?signatures??
          ??
          ??
          //請(qǐng)注意,我們將四層推送到我們的注冊(cè)表,現(xiàn)在可供其他人共享。快速瀏覽一下:??
          [root@localhost?~]#?podman?inspect?1314444/test:nginx??
          //輸出:??
          [??
          ????{??
          ????????"Id":?"7f3589c0b8849a9e1ff52ceb0fcea2390e2731db9d1a7358c2f5fad216a48263",??
          ????????"Digest":?"sha256:7822b5ba4c2eaabdd0ff3812277cfafa8a25527d1e234be028ed381a43ad5498",??
          ????????"RepoTags":?[??
          ????????????"docker.io/1314444/test:nginx",??
          ????????......??

          總而言之,Podman 使查找、運(yùn)行、構(gòu)建和共享容器變得容易。

          配置別名

          如果習(xí)慣了使用 Docker 命令,可以直接給 Podman 配置一個(gè)別名來(lái)實(shí)現(xiàn)無(wú)縫轉(zhuǎn)移。你只需要在 .bashrc 下加入以下行內(nèi)容即可:

          [root@localhost?~]#?echo?"alias?docker=podman"?>>?.bashrc??
          source?.bashrc??
          [root@localhost?~]#?alias??
          alias?cp='cp?-i'??
          alias?docker='podman'??
          .......??
          用戶操作

          在允許沒(méi)有root特權(quán)的用戶運(yùn)行Podman之前,管理員必須安裝或構(gòu)建Podman并完成以下配置。

          cgroup V2Linux內(nèi)核功能允許用戶限制普通用戶容器可以使用的資源,如果使用cgroupV2啟用了運(yùn)行Podman的Linux發(fā)行版,則可能需要更改默認(rèn)的OCI運(yùn)行時(shí)。某些較舊的版本runc不適用于cgroupV2,必須切換到備用OCI運(yùn)行時(shí)crun。

          [root@localhost?~]#?yum?-y?install?crun?????//centos8系統(tǒng)自帶??
          ??
          [root@localhost?~]#?vi?/usr/share/containers/containers.conf???
          ????446?#?Default?OCI?runtime??
          ????447?#???
          ????448?runtime?=?"crun"??????//取消注釋并將runc改為crun??
          ??
          [root@localhost?~]#?podman?run?-d?--name?web?-p?80:80?docker.io/library/nginx??
          c8664d2e43c872e1e5219f82d41f63048ed3a5ed4fb6259c225a14d6c243677f??
          ??
          [root@localhost?~]#?podman?inspect?web?|?grep?crun??
          ????????"OCIRuntime":?"crun",??
          ????????????"crun",??

          安裝slirp4netns和fuse-overlayfs

          在普通用戶環(huán)境中使用Podman時(shí),建議使用fuse-overlayfs而不是VFS文件系統(tǒng),至少需要版本0.7.6。現(xiàn)在新版本默認(rèn)就是了。

          [root@localhost?~]#?yum?-y?install?slirp4netns??
          ??
          [root@localhost?~]#?yum?-y?install?fuse-overlayfs??
          [root@localhost?~]#?vi?/etc/containers/storage.conf??
          77?mount_program?=?"/usr/bin/fuse-overlayfs"?????//取消注釋??

          /etc/subuid和/etc/subgid配置

          Podman要求運(yùn)行它的用戶在/etc/subuid和/etc/subgid文件中列出一系列UID,shadow-utils或newuid包提供這些文件

          [root@localhost?~]#?yum?-y?install?shadow-utils??

          可以在/etc/subuid和/etc/subgid查看,每個(gè)用戶的值必須唯一且沒(méi)有任何重疊。

          [root@localhost?~]#?useradd?zz??
          [root@localhost?~]#?cat?/etc/subuid??
          zz:100000:65536??
          [root@localhost?~]#?cat?/etc/subgid??
          zz:100000:65536??
          ??
          //?啟動(dòng)非特權(quán)ping???
          [root@localhost?~]#?sysctl?-w?"net.ipv4.ping_group_range=0?200000"?//大于100000這個(gè)就表示tom可以操作podman??
          net.ipv4.ping_group_range?=?0?200000??

          這個(gè)文件的格式是 USERNAME:UID:RANGE

          • 中/etc/passwd或輸出中列出的用戶名getpwent。

          • 為用戶分配的初始 UID。

          • 為用戶分配的 UID 范圍的大小。

          該usermod程序可用于為用戶分配 UID 和 GID,而不是直接更新文件。

          [root@localhost?~]#?usermod?--add-subuids?200000-201000?--add-subgids?200000-201000?hh??
          grep?hh?/etc/subuid?/etc/subgid??
          /etc/subuid:hh:200000:1001??
          /etc/subgid:hh:200000:1001??

          用戶配置文件

          三個(gè)主要的配置文件是container.conf、storage.conf和registries.conf。用戶可以根據(jù)需要修改這些文件。

          • container.conf
          //?用戶配置文件??
          [root@localhost?~]#?cat?/usr/share/containers/containers.conf??
          [root@localhost?~]#?cat?/etc/containers/containers.conf??
          [root@localhost?~]#?cat?~/.config/containers/containers.conf??//優(yōu)先級(jí)最高??

          如果它們以該順序存在。每個(gè)文件都可以覆蓋特定字段的前一個(gè)文件。

          • 配置storage.conf文件
          1./etc/containers/storage.conf??
          2.$HOME/.config/containers/storage.conf??

          在普通用戶中/etc/containers/storage.conf的一些字段將被忽略

          [root@localhost?~]#??vi?/etc/containers/storage.conf??
          [storage]??
          ??
          #?Default?Storage?Driver,?Must?be?set?for?proper?operation.??
          driver?=?"overlay"????????#此處改為overlay??
          .......??
          mount_program?=?"/usr/bin/fuse-overlayfs"????????#取消注釋??
          ??
          [root@localhost?~]# sysctl user.max_user_namespaces=15000??#如果版本為8以下,則需要做以下操作:??

          在普通用戶中這些字段默認(rèn)

          graphroot="$HOME/.local/share/containers/storage"??
          runroot="$XDG_RUNTIME_DIR/containers"??
          • registries.conf

          配置按此順序讀入,這些文件不是默認(rèn)創(chuàng)建的,可以從/usr/share/containers或復(fù)制文件/etc/containers并進(jìn)行修改。

          1./etc/containers/registries.conf??
          2./etc/containers/registries.d/*??
          3.HOME/.config/containers/registries.conf??
          授權(quán)文件

          此文件里面寫(xiě)了docker賬號(hào)的密碼,以加密方式顯示

          [root@localhost?~]#?podman?login??
          Username:?1314444??
          Password:???
          Login?Succeeded!??
          [root@localhost?~]#?cat?/run/user/0/containers/auth.json???
          {??
          ????????"auths":?{??
          ????????????????"registry.fedoraproject.org":?{??
          ????????????????????????"auth":?"MTMxNDQ0NDpIMjAxNy0xOA=="??
          ????????????????}??
          ????????}??
          }??

          普通用戶是無(wú)法看見(jiàn)root用戶的鏡像的

          //root用戶??
          [root@localhost?~]#?podman?images??
          REPOSITORY??????????????????TAG??????IMAGE?ID???????CREATED???????SIZE??
          docker.io/library/httpd?????latest???ea28e1b82f31???11?days?ago???146?MB??
          ??
          //普通用戶??
          [root@localhost?~]#?su?-?zz??
          [zz@localhost?~]$?podman?images??
          REPOSITORY??TAG?????????IMAGE?ID????CREATED?????SIZE??

          • 容器與root用戶一起運(yùn)行,則root容器中的用戶實(shí)際上就是主機(jī)上的用戶。

          • UID GID是在/etc/subuid和/etc/subgid等中用戶映射中指定的第一個(gè)UID GID。

          • 如果普通用戶的身份從主機(jī)目錄掛載到容器中,并在該目錄中以根用戶身份創(chuàng)建文件,則會(huì)看到它實(shí)際上是你的用戶在主機(jī)上擁有的。

          使用卷
          [root@localhost?~]#?su?-?zz??
          [zz@localhost?~]$?pwd??
          /home/zz??
          [zz@localhost?~]$?mkdir?/home/zz/data??
          ??
          [zz@localhost?~]$?podman?run?-it?-v?"$(pwd)"/data:/data?docker.io/library/busybox?/bin/sh??
          Trying?to?pull?docker.io/library/busybox:latest...??
          Getting?image?source?signatures??
          Copying?blob?3cb635b06aa2?done????
          Copying?config?ffe9d497c3?done????
          Writing?manifest?to?image?destination??
          Storing?signatures??
          /?#?ls??
          bin???data??dev???etc???home??proc??root??run???sys???tmp???usr???var??
          /?#?cd?data/??
          /data?#?ls??
          /data?#?touch?123??
          /data?#?ls?-l??
          total?0??
          -rw-r--r--????1?root?????root?????????????0?Dec?13?00:17?123??

          在主機(jī)上查看
          [zz@localhost?~]$?ll?data/??
          總用量?0??
          -rw-r--r--?1?zz?zz?0?12月?13?00:17?123??
          ??
          //寫(xiě)入文件??
          [zz@localhost?~]$?echo?"hell?world"?>>?123??
          [zz@localhost?~]$?cat?123??
          hell?world??

          容器里查看
          /data?#?cat?123??
          hell?world??
          ??
          //我們可以發(fā)現(xiàn)在容器里面的文件的屬主和屬組都屬于root,那么如何才能讓其屬于tom用戶呢?下面告訴你答案??
          /data?#?ls?-l??
          total?4??
          -rw-rw-r--????1?root?????root????????????12?Dec?13?00:20?123??
          ??
          //只要在運(yùn)行容器的時(shí)候加上一個(gè)--userns=keep-id即可。??
          [zz@localhost?~]$?podman?run?-it?--name?test?-v?"$(pwd)"/data:/data?--userns=keep-id?docker.io/library/busybox?/bin/sh??
          ~?$?cd?data/??
          /data?$?ls?-l??
          total?4??
          -rw-r--r--????1?zz???????zz??????????????11?Dec?13?00:21?123??

          使用普通用戶映射容器端口時(shí)會(huì)報(bào)“ permission denied”的錯(cuò)誤

          [zz@localhost?~]$?podman?run??-d?-p?80:80?httpd??
          Error:?rootlessport?cannot?expose?privileged?port?80,?you?can?add?'net.ipv4.ip_unprivileged_port_start=80'?to?/etc/sysctl.conf?(currently?1024),?or?choose?a?larger?port?number?(>=?1024):?listen?tcp?0.0.0.0:80:?bind:?permission?denied??

          普通用戶可以映射>= 1024的端口

          [zz@localhost?~]$?podman?run??-d?-p?1024:80?httpd??
          58613a6bdc70d4d4f9f624583f795a62a610596d166f0873bdff8fb26aa15092??
          [zz@localhost?~]$?ss?-anlt??
          State???????Recv-Q??????Send-Q???????????Local?Address:Port???????????Peer?Address:Port??????Process????????
          LISTEN??????0???????????128????????????????????0.0.0.0:22??????????????????0.0.0.0:*????????????????????????
          LISTEN??????0???????????128??????????????????????????*:1024??????????????????????*:*????????????????????????
          LISTEN??????0???????????128???????????????????????[::]:22?????????????????????[::]:*??

          配置echo ‘net.ipv4.ip_unprivileged_port_start=80’ >> /etc/sysctl.conf

          后可以映射大于等于80的端口

          [root@localhost?~]#?echo??'net.ipv4.ip_unprivileged_port_start=80'??>>?/etc/sysctl.conf??
          [root@localhost?~]#?sysctl?-p??
          net.ipv4.ip_unprivileged_port_start?=?80??
          ??
          [zz@localhost?~]$?podman?run?-d?-p?80:80?httpd??
          1215455a0c300d78e7bf6afaefc9873f818c6b0f26affeee4e2bc17954e72d8e??
          [zz@localhost?~]$?ss?-anlt??
          State???????Recv-Q??????Send-Q???????????Local?Address:Port???????????Peer?Address:Port??????Process????????
          LISTEN??????0???????????128????????????????????0.0.0.0:22??????????????????0.0.0.0:*????????????????????????
          LISTEN??????0???????????128??????????????????????????*:1024??????????????????????*:*????????????????????????
          LISTEN??????0???????????128??????????????????????????*:80????????????????????????*:*????????????????????????
          LISTEN??????0???????????128???????????????????????[::]:22?????????????????????[::]:*??

          鏈接:https://blog.csdn.net/qq_48289488/article/details/121905018

          文章轉(zhuǎn)載:SegmentFault
          (版權(quán)歸原作者所有,侵刪)


          點(diǎn)擊下方“閱讀原文”查看更多

          瀏覽 83
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜精品视频在线 | 国产在线一卡 | 亚洲AV无码无线在线观看护士 | 婷婷五月综合网 | 有没有免费av |