Podman 的基本设置和使用
安装Podman
- 安装Podman阅读podman部署与应用
熟悉Podman
- 运行示例容器
//此示例容器将运行一个非常基本的 httpd 服务器,该服务器仅为其索引页提供服务。
[root@loaclhost ~]# podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
> -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
> -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
> registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
Trying to pull registry.fedoraproject.org/f29/httpd:latest...
Getting image source signatures
Copying blob d77ff9f653ce done
Copying blob aaf5ad2e1aa3 done
Copying blob 7692efc5f81c done
Copying config 25c76f9dcd done
Writing manifest to image destination
Storing signatures
ba73d059596fd21fee26c88a499500344879b8147d9679f8543fcf5f05f56578
由于容器在分离模式下运行(在命令中由 -d 表示),因此 Podman 将在运行后打印容器 ID。请注意,我们使用端口转发来访问 HTTP 服务器。要成功运行,至少需要 slirp4netns v0.3.0。podman run
- 列出正在运行的容器
//Podman ps 命令用于列出创建和运行的容器
[root@loaclhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba73d059596f registry.fedoraproject.org/f29/httpd:latest /usr/bin/run-http... 41 seconds ago Up 42 seconds ago 0.0.0.0:8080->8080/tcp suspicious_bell
注意:如果将 -a 添加到 ps 命令中,Podman 将显示所有容器
- 检查正在运行的容器
//您可以“检查”正在运行的容器,以获取有关其自身的元数据和详细信息。我们甚至可以使用 inspect 子命令来查看分配给容器的 IP 地址。由于容器在无根模式下运行,因此不会分配 IP 地址,并且该值将在检查的输出中列为“无”
[root@loaclhost ~]# podman inspect -l | grep -i ipaddress
"IPAddress": "10.88.0.2",
"IPAddress": "10.88.0.2",
注意:-l 是最新容器的便利参数。还可以使用容器的 ID 而不是 -l,-i忽略大小写
- 测试 httpd 服务器
//由于我们没有容器的IP地址,因此我们可以使用curl测试主机操作系统和容器之间的网络通信。以下命令应显示容器化 httpd 服务器的索引页
[root@loaclhost ~]# curl http://localhost:8080
- 查看容器的日志
//您还可以使用 Podman 查看容器的日志:
[root@loaclhost ~]# podman logs --latest
- 查看容器的 pid
//你可以观察容器中的httpd pid与顶部
[root@loaclhost ~]# podman top -l
USER PID PPID %CPU ELAPSED TTY TIME COMMAND
default 1 0 0.000 6m22.833566024s pts/0 0s httpd -D FOREGROUND
default 24 1 0.000 6m22.833689494s pts/0 0s /usr/bin/coreutils --coreutils-prog-shebang=cat /usr/bin/cat
......
- 对容器执行检查点操作
//对容器执行检查点操作会停止容器,同时将容器中所有进程的状态写入磁盘。这样,容器以后可以还原,并在与检查点完全相同的时间点继续运行。此功能要求在系统上安装 CRIU 3.11 或更高版本。不支持此功能作为无根;因此,如果您想尝试一下,则需要使用相同的命令(但使用sudo)以root身份重新创建容器。
要对容器使用检查点,请使用:
[root@loaclhost ~]# podman container checkpoint -l
ba73d059596fd21fee26c88a499500344879b8147d9679f8543fcf5f05f56578
[root@loaclhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba73d059596f registry.fedoraproject.org/f29/httpd:latest /usr/bin/run-http... 9 minutes ago Exited (0) 20 seconds ago 0.0.0.0:8080->8080/tcp suspicious_bell
//还原容器
还原容器仅适用于以前检查点的容器。还原的容器将继续在检查点操作的同一时间点运行。要恢复容器,请使用:
[root@loaclhost ~]# podman container restore -l
ba73d059596fd21fee26c88a499500344879b8147d9679f8543fcf5f05f56578
[root@loaclhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba73d059596f registry.fedoraproject.org/f29/httpd:latest /usr/bin/run-http... 10 minutes ago Up 10 minutes ago 0.0.0.0:8080->8080/tcp suspicious_bell
- 迁移容器
//要将容器从一个主机实时迁移到另一个主机,容器将在迁移的源系统上执行检查点操作,传输到目标系统,然后在目标系统上还原。传输检查点时,可以指定输出文件。
在源系统上:
sudo podman container checkpoint <container_id> -e /tmp/checkpoint.tar.gz
scp /tmp/checkpoint.tar.gz <destination_system>:/tmp
在目标系统上:
sudo podman container restore -i /tmp/checkpoint.tar.gz
还原后,容器将像检查点之前一样再次应答请求。这一次,容器将继续在目标系统上运行。
curl http://<IP_address>:8080
- 停止容器
//要停止 httpd 容器,请执行以下操作:
[root@loaclhost ~]# podman stop --latest
ba73d059596fd21fee26c88a499500344879b8147d9679f8543fcf5f05f56578
//您还可以使用 ps 子命令检查一个或多个容器的状态。在这种情况下,我们应该使用 -a 参数列出所有容器
[root@loaclhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba73d059596f registry.fedoraproject.org/f29/httpd:latest /usr/bin/run-http... 16 minutes ago Exited (0) 30 seconds ago 0.0.0.0:8080->8080/tcp suspicious_bell
- 移除容器
//删除 httpd 容器:
[root@loaclhost ~]# podman rm --latest
ba73d059596fd21fee26c88a499500344879b8147d9679f8543fcf5f05f56578
//您可以通过运行 podman ps -a 来验证容器的删除
[root@loaclhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
odman ps -a 来验证容器的删除
[root@loaclhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES