podman 教程_poe录像机接poe交换机方法

(34) 2024-09-26 16:01:03

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 signatures  Copying blob d982c879c57e skipped: already exists    -----------  dabbfbe0c57b6e5cd4bc089818d3f664acfad496dc741c9a501e72d15e803b34  [root@podman ~]# podman run -d -p 80:80 --name web httpd:latest  运行容器,-d 后台 -p 端口映射 --name 名字 httpd:latest镜像  4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfbcb2ab9efe21  [root@podman ~]# podman ps  # 如果在ps命令中添加-a,Podman 将显示所有容器  CONTAINER ID IMAGE                           COMMAND           CREATED       STATUS           PORTS               NAMES  4645beec195a 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 web  USER       PID         PPID       %CPU       ELAPSED         TTY         TIME       COMMAND  root        1           0           0.000       9m12.s ?           0s         httpd -DFOREGROUND  www-data    8           1           0.000       9m12.s   ?           0s         httpd -DFOREGROUND  www-data    9           1           0.000       9m12.s   ?           0s         httpd -DFOREGROUND  www-data    10          1           0.000       9m12.s ?           0s         httpd -DFOREGROUND  [root@podman ~]# 

检查点容器

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

 [root@podman ~]# podman container checkpoint web  4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfbcb2ab9efe21  [root@podman ~]# podman ps  CONTAINER ID IMAGE       COMMAND     CREATED     STATUS     PORTS       NAMES

恢复容器

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

 [root@podman ~]# podman container restore web 
 4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21
 [root@podman ~]# podman ps
 CONTAINER ID  IMAGE                           COMMAND           CREATED         STATUS             PORTS               NAMES
 4645beec195a  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.gz
 4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfb5748717cb2ab9efe21
 [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 4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfbcb2ab9efe21 [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 4645beec195a28d7e633d018e8fc5cfdf5d583ce71abfbcb2ab9efe21 [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 服务器。这意味着在图像拉取操作期间,每个未签名的图像都将被拒绝。

这里使用之前部署的Harborpodman 教程_poe录像机接poe交换机方法 (https://mushiming.com/)  第1张

首先,我们必须创建一个 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) y GnuPG 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: @.com Comment: You selected this USER-ID: "xuan520 <@.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 <@.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 <@.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.cn sigstore-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 <@.com> sub rsa2048 2022-08-15 [E] [root@podman ~]# podman push \ > --tls-verify=false \ > --sign-by @.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 @.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 ~]# 

podman 教程_poe录像机接poe交换机方法 (https://mushiming.com/)  第2张

镜像在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=9afb8bb8fa08be4b0ae955de03818fdf80616b81'

删除镜像:

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=9afb8bb8fa08be4b0ae955de03818fdf80616b81/signature-23209 HTTP/1.1" 200

podman 教程_poe录像机接poe交换机方法 (https://mushiming.com/)  第3张

这里看到了拉取记录

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: amd64 buildahVersion: 1.22.3 ……………… version: APIVersion: 3.3.1 Built:  BuiltTime: Wed Nov 10 05:23:56 2021 GitCommit: "" GoVersion: go1.16.7 OsArch: linux/amd64 Version: 3.3.1 

登入和登出

[root@podman ~]# podman login docker.io Username:  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": "f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e0cf74", "Digest": "sha256:ec820a5d59eb3ab9aaa6201d193f91c3354f8c4fd9353d4cc6", "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: f2a976f932ec6fe48978c1cdde2c8217a497b1f080c80e49049e0cf74 [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 28af 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

搜索镜像

示例 [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 7a done Writing manifest to image destination Storing signatures 7accd4c2b4b423fa6e38e5ceaf40cd855e464cc52a321a24dd [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 7acc 2 weeks ago 1.47 MB

tag

对镜像修改标签

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

push

上传镜像

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

tree

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

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

container容器管理子命令

create

创建一个或多个容器

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

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 c4eeac 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 c4eeac 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 c4eeac 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 c4eeacfa6e9b0265c2d13b9f82310d08535f74c7343ba3e6a91 [root@podman ~]# podman container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c4eeac 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 65a2cff8075afc96d2dc0fe9ed77ab222c690e7389d9003d033900 [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": "3f18617f6997e57cb7a05f22427ff26935fbe1f90628", "Created": "2022-08-14T20:52:27.+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.ms 1.47% 

top

显示容器的运行进程

示例 [root@podman ~]# podman container top xx USER PID PPID %CPU ELAPSED TTY TIME COMMAND root 1 0 0.000 10m23.s 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  3f18617f6997e57cb7a05f22427ff26935fbe1f90628  g4aeacfa6e9b0265c2d13b9f82310d08535f74c7343baa91  5477b45cf574d73a131edc8e1437dd772dbddda503ebc77eeb8288  9d2fb9042b71f7b0fcde40f3a40e358a83f08a2a2c155d8110ba9c2e4ce7  [root@podman ~]# podman container ps -a  CONTAINER 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)
THE END

发表回复