Podman的基本设置和使用

-

目录

Podman的基本设置和使用

使用和设置

运行示例容器

检测正在运行的容器

测试 httpd 服务器

查看容器的日志

查看容器的 pid

检查点容器

恢复容器

迁移容器

停止容器

删除容器

如何使用 Podman 签署和分发容器镜像

podman基本用法

image镜像管理子命令

build

diff

history

inspect

list

rm

save

load

prune

search

pull

tag

push

tree

container容器管理子命令

create

start

ps或者list

rename

stop

restart

run

attach

exec

cp

diff

inspect

stats

top

logs

kill

port

rm

生成service文件


Podman 是作为 libpod 库的一部分提供的实用程序。它可用于创建和维护容器。以下教程将教您如何设置 Podman 并使用 Podman 执行一些基本命令。

如果您在 Mac 或 Windows PC 上运行,则应按照Mac 和 Windows 教程 设置远程 Podman 客户端。

使用和设置

运行示例容器

 [root@podman ~]# podman pull httpd拉取httpd镜像latest版Trying to pull docker.io/library/httpd:latest...Getting image source signaturesCopying blob d982c879c57e skipped: already exists  -----------dabbfbe0c57b6e5cd4bc089818d3f664acfad496dc741c9a501e72d15e803b34[root@podman ~]# podman run -d -p 80:80 --name web httpd:latest 运行容器,-d 后台 -p 端口映射 --name 名字 httpd:latest镜像4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21[root@podman ~]# podman ps# 如果在ps命令中添加-a,Podman 将显示所有容器CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS               NAMES4645beec195a  docker.io/library/httpd:latest  httpd-foreground  6 seconds ago  Up 6 seconds ago  0.0.0.0:80->80/tcp  web[root@podman ~]# 

检测正在运行的容器

 [root@podman ~]# podman inspect web |grep IPAddress\":“检查”正在运行的web容器以获取有关其自身的元数据和详细信息"IPAddress": "10.88.0.2","IPAddress": "10.88.0.2",-l 是最新容器的方便参数。您也可以使用容器的 -l 代替 web 。

测试 httpd 服务器

由于我们没有容器的 IP 地址,我们可以使用 curl 测试宿主操作系统和容器之间的网络通信。以下命令应该显示我们容器化 httpd 服务器的索引页面。

 [root@podman ~]# curl 127.0.0.1<html><body><h1>It works!</h1></body></html>[root@podman ~]# 

查看容器的日志

您也可以使用 Podman 查看容器的日志:

 [root@podman ~]# podman logs web-------10.88.0.1 - - [15/Aug/2022:09:40:57 +0000] "GET / HTTP/1.1" 200 45这里可以通过容器id或name,也可以--latest或者-l来代表最近的

查看容器的 pid

可以使用top观察容器中的 httpd pid

 [root@podman ~]# podman top webUSER        PID         PPID        %CPU        ELAPSED          TTY         TIME        COMMANDroot        1           0           0.000       9m12.247568916s  ?           0s          httpd -DFOREGROUND www-data    8           1           0.000       9m12.2477296s    ?           0s          httpd -DFOREGROUND www-data    9           1           0.000       9m12.24775234s   ?           0s          httpd -DFOREGROUND www-data    10          1           0.000       9m12.247774051s  ?           0s          httpd -DFOREGROUND [root@podman ~]# 

检查点容器

检查点容器会停止容器,同时将容器中所有进程的状态写入磁盘。有了这个,容器可以稍后恢复并在与检查点完全相同的时间点继续运行.

 [root@podman ~]# podman container checkpoint web 4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21[root@podman ~]# podman psCONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

恢复容器

仅对以前设置检查点的容器才能恢复容器。恢复的容器将继续在与检查点完全相同的时间点运行。要恢复容器,请使用:

 [root@podman ~]# podman container restore web 4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21[root@podman ~]# podman psCONTAINER ID  IMAGE                           COMMAND           CREATED         STATUS             PORTS               NAMES4645beec195a  docker.io/library/httpd:latest  httpd-foreground  13 minutes ago  Up 13 minutes ago  0.0.0.0:80->80/tcp  web[root@podman ~]# 恢复后,容器将像检查点之前一样再次响应请求[root@podman ~]# curl 127.0.0.1<html><body><h1>It works!</h1></body></html>[root@podman ~]# 

迁移容器

要将容器从一台主机实时迁移到另一台主机,容器会在迁移的源系统上设置检查点,转移到目标系统,然后在目标系统上恢复。传输检查点时,可以指定输出文件。

 [root@podman ~]# podman container checkpoint web -e /root/web.tar.gz4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21[root@podman ~]# scp /root/web.tar.gz 192.168.245.131:/root/--------(yes/no/[fingerprint])? yes------web.tar.gz                                                    100%  377KB  92.7MB/s   00:00    #换台主机试一下,前提是有podman[root@docker ~]#  podman container restore -i /root/web.tar.gz[root@docker ~]#  curl 127.0.0.1<html><body><h1>It works!</h1></body></html>

停止容器

停止 httpd 容器:

[root@podman ~]# podman stop -l
4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21
[root@podman ~]# 

还可以使用ps子命令检查一个或多个容器的状态。在这种情况下,我们应该使用-a参数来列出所有容器。

[root@podman ~]# podman ps -a
CONTAINER ID  IMAGE                           COMMAND           CREATED         STATUS                     PORTS               NAMES
2684bce8b0b5  docker.io/library/httpd:latest  httpd-foreground  19 hours ago    Exited (0) 19 hours ago                        httpd
4645beec195a  docker.io/library/httpd:latest  httpd-foreground  27 minutes ago  Exited (0) 10 minutes ago  0.0.0.0:80->80/tcp  web

删除容器

要删除 httpd 容器:

[root@podman ~]# podman rm -l
4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21
[root@podman ~]# podman ps -a
CONTAINER ID  IMAGE                           COMMAND           CREATED       STATUS                   PORTS       NAMES
2684bce8b0b5  docker.io/library/httpd:latest  httpd-foreground  19 hours ago  Exited (0) 19 hours ago              httpd
[root@podman ~]# 

如何使用 Podman 签署和分发容器镜像

签署容器镜像的动机是只信任专门的镜像提供者以减轻中间人 (MITM) 攻击或对容器注册表的攻击。签署图像的一种方法是使用 GNU Privacy Guard ( GPG ) 密钥。这种技术通常与任何符合 OCI 的容器注册表兼容,例如Quay.io。值得一提的是,OpenShift 集成容器注册表开箱即用地支持这种签名机制,这使得单独的签名存储变得不必要。

从技术角度来看,我们可以利用 Podman 对镜像进行签名,然后再将其推送到远程注册表。之后,所有运行 Podman 的系统都必须配置为从远程服务器检索签名,远程服务器可以是任何简单的 Web 服务器。这意味着在图像拉取操作期间,每个未签名的图像都将被拒绝。

这里使用之前部署的Harbor

首先,我们必须创建一个 GPG 密钥对或选择一个已经在本地可用的密钥对。要生成新的 GPG 密钥,只需运行gpg --full-gen-key并按照交互式对话框操作。现在我们应该能够验证密钥在本地是否存在:
[root@podman ~]# gpg --full-gen-key
gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.Please select what kind of key you want:(1) RSA and RSA (default)(2) DSA and Elgamal(3) DSA (sign only)(4) RSA (sign only)(14) Existing key from card
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.0 = key does not expire<n>  = key expires in n days<n>w = key expires in n weeks<n>m = key expires in n months<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) yGnuPG needs to construct a user ID to identify your key.Real name: xuan
Name must be at least 5 characters long
Real name: xuan520
Email address: 12345678@qq.com
Comment:
You selected this USER-ID:"xuan520 <12345678@qq.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
--------------
public and secret key created and signed.pub   rsa2048 2022-08-15 [SC]A0E11404EE38E3B5CE3D8035C03C52E96BA1090B
uid                      xuan520 <12345678@qq.com>
sub   rsa2048 2022-08-15 [E][root@podman ~]# 4
密钥创建完成
[root@podman ~]# gpg --list-keys
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
/root/.gnupg/pubring.kbx
------------------------
pub   rsa2048 2022-08-15 [SC]A0E11404EE38E3B5CE3D8035C03C52E96BA1090B
uid           [ultimate] xuan520 <12345678@qq.com>
sub   rsa2048 2022-08-15 [E][root@podman ~]# 

这里以httpd镜像为标准镜像

[root@podman ~]# podman images
REPOSITORY               TAG         IMAGE ID      CREATED       SIZE
docker.io/library/httpd  latest      dabbfbe0c57b  7 months ago  148 MB
[root@podman ~]# 

现在我们可以重新标记图像以将其指向搭建的Harbor仓库

[root@podman ~]# podman tag httpd:latest xuanxuan.cn/xuanxuan/httpd:v520
[root@podman ~]# podman images
REPOSITORY                  TAG         IMAGE ID      CREATED       SIZE
docker.io/library/httpd     latest      dabbfbe0c57b  7 months ago  148 MB
xuanxuan.cn/xuanxuan/httpd  v520        dabbfbe0c57b  7 months ago  148 MB
[root@podman ~]#
#这里的xuanxuan.cn是Harbor访问域名,xuanxuan是仓库里的项目名称

Podman 现在可以通过一个命令推送图像并对其进行签名。但是要让它工作,我们必须在以下位置修改我们的系统范围的注册表配置 /etc/containers/registries.d/default.yaml

[root@podman ~]# vim /etc/containers/registries.d/default.yaml
default-docker:sigstore: http://xuanxuan.cnsigstore-staging: file:///var/lib/containers/sigstore
我们可以看到我们配置了两个签名存储:sigstore: 引用 Web 服务器进行签名读取
sigstore-staging: 引用文件路径进行签名写入

现在,让我们推送并签署图像:

[root@podman ~]# gpg --list-key
/root/.gnupg/pubring.kbx
------------------------
pub   rsa2048 2022-08-15 [SC]A0E11404EE38E3B5CE3D8035C03C52E96BA1090B
uid           [ultimate] xuan520 <12345678@qq.com>
sub   rsa2048 2022-08-15 [E][root@podman ~]# podman push \
>     --tls-verify=false \
>     --sign-by 12345678@qq.com \
>    xuanxuan.cn/xuanxuan/httpd:520
Error: xuanxuan.cn/xuanxuan/httpd:520: image not known
[root@podman ~]# podman login xuanxuan.cn
Username: admin
Password:
Login Succeeded!
[root@podman ~]# [root@podman ~]# podman push     --tls-verify=false     --sign-by 12345678@qq.com    xuanxuan.cn/xuanxuan/httpd:v520
#会跳出输入密码界面
Getting image source signatures
Copying blob deefaa620a71 done
Copying blob 1da636a1aa95 done
Copying blob 15e4bf5d0804 done
Copying blob 9cff3206f9a6 done
Copying blob 2edcec3590a4 done
Copying config dabbfbe0c5 done
Writing manifest to image destination
Signing manifest
Storing signatures
[root@podman ~]#

镜像在harbor中了。

问题:

写个hosts文件登录
192.168.245.131 xuanxuan.cn
#登录除了问题可以改下配置文件,可能是harbor用的是http方式传输
[root@podman ~]# vim /etc/containers/registries.conf
[registries.search]
registries = ['docker.io']
[registries.insecure]
registries = ['xuanxuan.cn']
#[[registry]]
#prefix = "docker.io"
#location = "fi54miqv.mirror.aliyuncs.com"

现在看一下系统签名存储,我们会看到有一个新的签名可用,这是由图像推送引起的:

[root@podman ~]# ls /var/lib/containers/sigstore/
xuanxuan
[root@podman xuanxuan]# ls
'httpd@sha256=9a941947f4810138b8bb8fa08be4b040863631006ae955de03818fdf80616b81'

删除镜像:

root@podman ~]# podman images
REPOSITORY                  TAG         IMAGE ID      CREATED       SIZE
docker.io/library/httpd     latest      dabbfbe0c57b  7 months ago  148 MB
xuanxuan.cn/xuanxuan/httpd  v520        dabbfbe0c57b  7 months ago  148 MB
[root@podman ~]# podman rmi xuanxuan.cn/xuanxuan/httpd:v520
Untagged: xuanxuan.cn/xuanxuan/httpd:v520
[root@podman ~]# podman images
REPOSITORY               TAG         IMAGE ID      CREATED       SIZE
docker.io/library/httpd  latest      dabbfbe0c57b  7 months ago  148 MB
[root@podman ~]# 

拉取镜像

[root@podman ~]# podman pull xuanxuan.cn/xuanxuan/httpd:v520
Trying to pull xuanxuan.cn/xuanxuan/httpd:v520...
Getting image source signatures
#这里发现没办法拉下来这个镜像

我们必须编写一个策略来强制签名必须是有效的。这可以通过在 中添加新规则来完成/etc/containers/policy.json。从下面的示例中,将"docker"条目复制到"transports"您的 policy.json.

{"default": [{ "type": "insecureAcceptAnything" }],"transports": {"docker": {"xuanxuan.cn/xuanxuan": [{"type": "signedBy","keyType": "GPGKeys","keyPath": "/tmp/key.gpg"}]}
[root@podman ~]# podman pull --tls-verify=false xuanxuan.cn/xuanxuan/httpd:v520
通过查看harbor日志发现,已经在拉取了
172.19.0.10 - - [15/Aug/2022:13:08:44 +0000] "GET /xuanxuan/httpd@sha256=9a941947f4810138b8bb8fa08be4b040863631006ae955de03818fdf80616b81/signature-23209 HTTP/1.1" 200

这里看到了拉取记录

podman基本用法

查看版本

[root@podman ~]# podman -v
podman version 3.3.1[root@podman ~]# podman version
Version:      3.3.1
API Version:  3.3.1
Go Version:   go1.16.7
Built:        Wed Nov 10 05:23:56 2021
OS/Arch:      linux/amd64//查看详细信息
[root@podman ~]# podman info
host:arch: amd64buildahVersion: 1.22.3
………………
version:APIVersion: 3.3.1Built: 1636493036BuiltTime: Wed Nov 10 05:23:56 2021GitCommit: ""GoVersion: go1.16.7OsArch: linux/amd64Version: 3.3.1

登入和登出

[root@podman ~]# podman login docker.io
Username: 2504875997
Password:
Login Succeeded![root@podman ~]# podman logout
Removed login credentials for docker.io

image镜像管理子命令

build

基于dockerfile创建镜像

diff

检查映像文件系统的更改

示例:
[root@podman ~]# podman diff httpd
C /usr
C /usr/local
C /usr/local/bin
A /usr/local/bin/httpd-foreground

history

显示指定镜像的历史记录

示例
[root@podman ~]# podman image history httpd
ID            CREATED      CREATED BY                                     SIZE              COMMENT
f2a976f932ec  12 days ago  /bin/sh -c #(nop)  CMD ["httpd-foreground"]    0 B
<missing>     12 days ago  /bin/sh -c #(nop)  EXPOSE 80                   0 B
<missing>     12 days ago  /bin/sh -c #(nop) COPY file:c432ff61c4993e...  3.58 kB
<missing>     12 days ago  /bin/sh -c #(nop)  STOPSIGNAL SIGWINCH         0 B
<missing>     12 days ago  /bin/sh -c set -eux;                                             savedAptMark="$(apt...  60.4 MB
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_PATCHES=          0 B
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_SHA256=eb397f...  0 B
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_VERSION=2.4.54    0 B
<missing>     12 days ago  /bin/sh -c set -eux;                           apt-get update;   apt...      5.1 MB
<missing>     12 days ago  /bin/sh -c #(nop) WORKDIR /usr/local/apache2   0 B
<missing>     12 days ago  /bin/sh -c mkdir -p "$HTTPD_PREFIX"            && ch...          3.07 kB
<missing>     12 days ago  /bin/sh -c #(nop)  ENV PATH=/usr/local/apa...  0 B
<missing>     12 days ago  /bin/sh -c #(nop)  ENV HTTPD_PREFIX=/usr/l...  0 B
<missing>     12 days ago  /bin/sh -c #(nop)  CMD ["bash"]                0 B
<missing>     12 days ago  /bin/sh -c #(nop) ADD file:0eae0dca665c704...  83.9 MB   

inspect

显示镜像的配置

示例
[root@podman ~]# podman image inspect httpd
[{"Id": "f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e02757302cf74","Digest": "sha256:343452ec820a5d59eb3ab9aaa6201d193f91c3354f8c4f29705796d9353d4cc6","RepoTags": ["docker.io/library/httpd:latest"],
…………],"NamesHistory": ["docker.io/library/httpd:latest"]}
]

list

列出本地存储中镜像

[root@podman ~]# podman image list
REPOSITORY               TAG         IMAGE ID      CREATED      SIZE
docker.io/library/httpd  latest      f2a976f932ec  12 days ago  149 MB

rm

删除镜像

示例
[root@podman ~]# podman image rm httpd
Untagged: docker.io/library/httpd:latest
Deleted: f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e02757302cf74
[root@podman ~]# podman image list
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
[root@podman ~]#
参数
-f  //强制删除,(不论这个镜像是否被使用)

save

将镜像保存到本地

示例
[root@podman ~]# podman image save httpd > http.tar
[root@podman ~]# ls
anaconda-ks.cfg  http.tar  test.sh

load

从tar存档加载镜像

示例
[root@podman ~]# podman image load < httpd.tar
Getting image source signatures
Copying blob 0c2dead5c030 done
Copying blob eea65516ea3b done
Copying blob 92a4e8a3140f done
Copying blob 28a53545632f done
Copying blob 54fa52c69e00 done
Copying config f2a976f932 done
Writing manifest to image destination
Storing signatures
Loaded image(s): docker.io/library/httpd:latest
[root@podman ~]# podman image list
REPOSITORY               TAG         IMAGE ID      CREATED      SIZE
docker.io/library/httpd  latest      f2a976f932ec  12 days ago  149 MB

prune

删除未使用的镜像

[root@podman ~]# podman image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y

search

搜索镜像

示例
[root@podman ~]# podman image search busybox
INDEX       NAME                                         DESCRIPTION                                      STARS       OFFICIAL    AUTOMATED
docker.io   docker.io/library/busybox                    Busybox base image.                              2712        [OK]
docker.io   docker.io/rancher/busybox                                                                     0
docker.io   docker.io/ibmcom/busybox                                                                      0
docker.io   docker.io/openebs/busybox-client                                                              0
docker.io   docker.io/antrea/busybox                                                                      0
docker.io   docker.io/ibmcom/busybox-amd64                                                                0
docker.io   docker.io/ibmcom/busybox-ppc64le                                                              0
docker.io   docker.io/yauritux/busybox-curl              Busybox with CURL                                16
docker.io   docker.io/radial/busyboxplus                 Full-chain, Internet enabled, busybox made f...  49                      [OK]
docker.io   docker.io/vukomir/busybox                    busybox and curl                                 1
docker.io   docker.io/odise/busybox-curl                                                                  4                       [OK]
………………

pull

拉取镜像

示例
[root@podman ~]# podman image pull busybox
Resolved "busybox" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/library/busybox:latest...
Getting image source signatures
Copying blob 50783e0dfb64 done
Copying config 7a80323521 done
Writing manifest to image destination
Storing signatures
7a80323521ccd4c2b4b423fa6e38e5cea156600f40cd855e464cc52a321a24dd
[root@podman ~]# podman image list
REPOSITORY                 TAG         IMAGE ID      CREATED      SIZE
docker.io/library/httpd    latest      f2a976f932ec  12 days ago  149 MB
docker.io/library/busybox  latest      7a80323521cc  2 weeks ago  1.47 MB

tag

对镜像修改标签

示例
[root@podman ~]# podman tag busybox 2504875997/busybox:v0.1
[root@podman ~]# podman image list
REPOSITORY                    TAG         IMAGE ID      CREATED      SIZE
docker.io/library/busybox     latest      7a80323521cc  2 weeks ago  1.47 MB
localhost/2504875997/busybox  v0.1        7a80323521cc  2 weeks ago  1.47 MB

push

上传镜像

示例
先打标签,改名
命名规则:自己的账户名/镜像名:版本号(标签)

tree

以树格式打印镜像的图层层次结构

示例
[root@podman ~]# podman image tree busybox
Image ID: 7a80323521cc
Tags:     [docker.io/library/busybox:latest localhost/2504875997/busybox:v0.1]
Size:     1.468MB
Image Layers
└── ID: 084326605ab6 Size: 1.463MB Top Layer of: [docker.io/library/busybox:latest localhost/2504875997/busybox:v0.1]

container容器管理子命令

create

创建一个或多个容器

示例
[root@podman ~]# podman container create httpd
9f18617f6997e57cb7a0645477269555f22427ff26935f874796be1f906ecb28
//也可以--name指定容器名
[root@podman ~]# podman container create --name alg httpd
c4eeac3366373fa6e9b0265c2d13b9f82310d08535f74c7343b698110a3e6a91

start

启动一个或多个容器

示例
[root@podman ~]# podman container start  alg
alg
[root@podman ~]# 

ps或者list

容器列表

示例
[root@podman ~]# podman container list
CONTAINER ID  IMAGE                           COMMAND           CREATED             STATUS             PORTS       NAMES
c4eeac336637  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up 34 seconds ago              alg
或者
[root@podman ~]# podman container ps
CONTAINER ID  IMAGE                           COMMAND           CREATED             STATUS             PORTS       NAMES
c4eeac336637  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up 45 seconds ago              alg

rename

重命名现有容器

示例
[root@podman ~]# podman container rename alg web
[root@podman ~]# podman container list
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS       NAMES
c4eeac336637  docker.io/library/httpd:latest  httpd-foreground  5 minutes ago  Up 4 minutes ago              web

stop

停止一个或多个容器

示例
[root@podman ~]# podman stop  web
web[root@podman ~]# podman container ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES
[root@podman ~]#

restart

重新启动一个或多个容器

示例
[root@podman ~]# podman container restart web
c4eeac3366373fa6e9b0265c2d13b9f82310d08535f74c7343b698110a3e6a91
[root@podman ~]# podman container ps
CONTAINER ID  IMAGE                           COMMAND           CREATED         STATUS             PORTS       NAMES
c4eeac336637  docker.io/library/httpd:latest  httpd-foreground  13 minutes ago  Up 14 seconds ago              web

run

在新容器中运行命令(可以理解为创建并启动容器)

示例
[root@podman ~]# podman container run -itd --name xx busybox
65a2cff8075af4913683689c96d2dc0fe9ed77ab222c690e7389d9003d033900
[root@podman ~]# podman container ps
CONTAINER ID  IMAGE                             COMMAND     CREATED        STATUS            PORTS       NAMES
7477b45c3593  docker.io/library/busybox:latest  sh          6 seconds ago  Up 7 seconds ago              xx参数
--name 容器名 //指定容器名
--label 标记名 //加标记方便查找
-it   //让容器的输入保持打开状态,并分配终端
-c    //不进行登录执行命令
-d    //将容器放入后台进行执行
-v     //可以创建多个数据卷也可挂载到宿主机的目录,如果本地没有目录,则自动生成一个目录挂载方法    //宿主机目录:docker数据卷[root@docker ~]# docker run -d -v /var/www/:/www nginx  //在本地创建一个/var/www目录 ,在容器里面创建一个/www目录;将本地目录映射到容器目录-p     //映射端口   宿主机端:容器端口
-P      //发布所有公开的端口(随机映射端口号)
--volumes-from  //容器和容器之间建立联系将容器的所有目录共享给新创建的容器[root@docker ~]# docker run  --volumes-from 想要挂载的容器 --name 指定新容器名 镜像[root@docker ~]# docker run -it --volumes-from wxh --name wwww nginx /bin/bash
----restart always //永久开启容器,服务重启后容器也会启动,不会关闭
--rm //一次性容器,退出后直接删除

attach

连接到运行的容器

示例
[root@podman ~]# podman container attach xx
/ # ls
bin   dev   etc   home  proc  root  run   sys   tmp   usr   var
/ # 

exec

在正在运行的容器中运行进程

示例
[root@podman ~]# podman container exec -it xx /bin/sh
/ # ls
bin   dev   etc   home  proc  root  run   sys   tmp   usr   var

cp

在容器和本地文件之间复制文件/文件夹

示例
[root@podman ~]# podman container cp a xx:/
[root@podman ~]# podman container exec -it xx /bin/sh
/ # ls
a     bin   dev   etc   home  proc  root  run   sys   tmp   usr   var

diff

检查对容器文件系统的更改

示例
[root@podman ~]# podman container diff xx
C /root
A /root/.ash_history
C /etc
A /a

inspect

显示容器的配置

示例
[root@podman ~]# podman container inspect xx
[{"Id": "3f18617f6997e57cb7a0645477269555f22427ff26935f874796be1f90628","Created": "2022-08-14T20:52:27.408770105+08:00","Path": "sh","Args": ["sh"],
…………"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"CgroupConf": null}}
]

stats

显示容器使用资源的状态

[root@podman ~]# podman container stats xx
示例
ID            NAME        CPU %       MEM USAGE / LIMIT  MEM %       NET IO             BLOCK IO    PIDS        CPU TIME     AVG CPU %
32234b45c3593  xx         --          262.1kB / 8.112GB  0.00%       1.048kB / 1.624kB  -- / --     1           97.389344ms  1.47%

top

显示容器的运行进程

示例
[root@podman ~]# podman container top xx
USER        PID         PPID        %CPU        ELAPSED           TTY         TIME        COMMAND
root        1           0           0.000       10m23.955804699s  pts/0       0s          sh 

logs

获取一个或多个容器的日志

示例
[root@podman ~]# podman container logs xx
/ # ls
bin   dev   etc   home  proc  root  run   sys   tmp   usr   var
/ # exit 

kill

使用特定信号终止一个或多个正在运行的容器

示例
[root@podman ~]# podman kill xx
xx
[root@podman ~]# podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES
[root@podman ~]# 

port

列出端口映射或容器的特定映射

示例
[root@podman ~]# podman container run -d --name algg -p 888:80 httpd
8d2fb9042b71f7b0fcde40f3a40e358a83f08a2a2c155d8110ba9c2e54ce78
[root@podman ~]# podman container port algg
80/tcp -> 0.0.0.0:888

rm

移除一个或多个容器

 示例//删除只能删停止的容器[root@podman ~]# podman stop algg algg[root@podman ~]# podman container rm 9f18617f6997 web xx algg 3f18617f6997e57cb7a0645477269555f22427ff26935f874796be1f90628g4aeac3366373fa6e9b0265c2d13b9f82310d08535f74c7343b698110aa915477b45c359362f574d73a131edc8e1437dd772dbddda503ebc77eeb82889d2fb9042b71f7b0fcde40f3a40e358a83f08a2a2c155d8110ba9c2e4ce7[root@podman ~]# podman container ps -aCONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES[root@podman ~]# 参数-f  //强制删除,不论容器是否在运行

生成service文件

基于容器、pod或卷生成结构化数据。

 语法:podman generate systemd [options] {CONTAINER|POD}选项:--container-prefix string   //容器的Systemd单元名称前缀(默认为“容器”)--files, -f         //生成.service文件--format string         //以指定格式(json)打印创建的单位--name, -n          //使用容器/容器名称,而不是ID--new               //创建新容器,而不是启动现有容器--no-header         //跳过标题生成--pod-prefix string         //pod的Systemd单元名称前缀(默认为“pod”)--restart-policy string     //Systemd重新启动策略(默认为“故障时”)--separator string      //Systemd单元名称:名称/id和前缀之间的分隔符(默认“-”)--time uint, -t         //停止超时覆盖(默认值为10)

Podman的基本设置和使用相关推荐

  1. podman基本设置使用及分发容器镜像与一些常用命令

    podman应用 文章目录 podman应用 @[toc] 1. podman的基本设置和使用 1.1 运行一个容器 1.2 列出正在运行的容器 1.3 查看容器ip并访问 1.4 查看容器的日志 1 ...

  2. Podman 在 Rootless 环境中的基本设置和使用

    用户操作 在允许没有root特权的用户运行Podman之前,管理员必须安装或构建Podman并完成以下配置 cgroup V2Linux内核功能允许用户限制普通用户容器可以使用的资源,如果使用cgro ...

  3. Podman一篇就学会

    Podman入门 什么是podman? Podman是一种无守护进程.开源的 Linux 原生工具,旨在使用开放容器倡议 ( OCI )容器和容器映像轻松查找.运行.构建.共享和部署应用程序.Podm ...

  4. Podman使用详解

    参考:Podman一篇就学会 一.Podman入门 1.1什么是podman? Podman是一种无守护进程.开源的 Linux 原生工具,旨在使用开放容器倡议 ( OCI ) 容器和 容器映像轻松查 ...

  5. podman安装及使用命令

    文章目录 什么是Podman? Podman和Docker的主要区别是什么? Podman的使用与docker有什么区别? podman安装和基础命令 安装podman podman基础命令使用 po ...

  6. CentOS装机必备-基本设置以及缺失文件

    SecureCRT中注意不要使用以Ascii方式上传文件,只有在需要的地方才使用. 主要是虚拟机中安装CentOS每次总会做一些设置,记录下来方便以后. 纯粹基本设置,比如本地SecureCRT可以连 ...

  7. Podman中如何运行一个 Linux 虚拟机?

    使用 Podman Machine 创建一个基本的 Fedora CoreOS 虚拟机来使用容器和容器化工作负载. Fedora CoreOS 是一个自动更新.最小化的基于 rpm-ostree 的操 ...

  8. 如何在 Fedora 上使用 Podman

    Podman是一个无守护程序的容器引擎,用于在你的 Linux 系统上开发.管理和运行 OCI 容器.在这篇文章中,我们将介绍 Podman 以及如何用 nodejs 构建一个小型应用来使用它.该应用 ...

  9. Podman又是什么新技术?它和Docker有啥区别?

    容器编排工具作为当今最重要的Web开发技术之一,众多强者都在尝试争夺这一行业的主导地位. Podman是RedHat的一款产品,旨在使用类似于Kubernetes的方法来构建.管理和运行容器,作为一款 ...

最新文章

  1. 机器学习:协方差矩阵
  2. python与c语言数据交互,python与c语言交互应用实例
  3. 微服务后如何做一次系统梳理
  4. html5网页制作代码_推荐十个好用的HTML5小工具,前端程序员居家必备良品
  5. 发展光伏产业 破解大气污染之困
  6. django view返回form error_Django(解决被钓鱼CSRF、Django中间件、反射)
  7. C#-Activex插件操作指南
  8. Redis-秒杀场景应用
  9. 计算机上安装了更新ie版本,电脑ie浏览器版本过低怎么升级方法
  10. 计算机网络基础实验短篇感悟,浅析数字实验短片的制作流程
  11. hdu 5652 India and China Origins 并查集
  12. fftn N 维快速傅里叶变换(Matlab)
  13. 班级校园网页设计作业 静态HTML我的班级网页 DW班级网站模板 大学生简单班级网页作品代码 我的大学网页制作 学生班级网页设计作业
  14. 数据分析-数据指标描述业务之--咸鱼APP
  15. 风电的Weibull分布及光电的Beta分布组合研究(Matlab代码实现)
  16. 9个Excel小技巧,提高你的数据分析效率
  17. 华展云1.1.0版本更新通告
  18. AWVS扫描web站点
  19. java 防渗透_火焰 对于 () 相当于墨汁对于()A.冰冷 洁白B.温暖 黝黑C.氧气 砚台D.光明 黑暗...
  20. explorer被微信企业版劫持一例

热门文章

  1. IOT(24)---物联网网关
  2. JAVA计算机毕业设计补课管理系统Mybatis+系统+数据库+调试部署
  3. Python数据可视化图表大全
  4. USB 对拷线材 YYDS
  5. linux查看磁盘及磁盘类型
  6. JAVA后端面经总结
  7. GB2312的中文编码表
  8. Excel如何快速删除空白行?替换部分字符?
  9. java中反射机制的含义_java的反射是什么意思?
  10. 计算机组成原理笔记(7)---定、浮点运算、算术逻辑单元