Podman常用命令總結(jié)

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)擊下方“閱讀原文”查看更多
