Podman的基本设置和使用
Podman是libpod库提供的一个实用工具,可以用来创建和维护容器。以下教程将教您如何设置Podman并执行一些基本的Podman命令。
如果您在Mac或Windows PC上运行,请按照Mac和Windows教程来设置远程Podman客户端。
注意:代码示例旨在以非root用户身份运行,并在需要root权限时使用sudo
。
安装Podman
要安装或构建Podman,请参阅安装说明。
熟悉Podman
运行示例容器
这个示例容器将运行一个非常基本的httpd服务器(名为basic_httpd),它只提供其索引页面。
podman run --name basic_httpd -dt -p 8080:80/tcp docker.io/nginx
因为容器以分离模式运行,这在podman run
命令中用-d表示,所以Podman在容器运行后将打印容器ID。请注意,我们使用端口转发来访问HTTP服务器。成功运行至少需要slirp4netns v0.3.0。
列出正在运行的容器
Podman的ps命令用于列出正在创建和运行的容器。
podman ps
通过这个命令,您可以查看当前正在运行的容器列表,包括它们的ID、名称、镜像、状态、创建时间等信息。如果您想查看包括已停止的容器在内的所有容器,可以使用podman ps -a
命令。
停止并删除容器
如果您想停止并删除之前运行的basic_httpd容器,可以使用以下命令:
podman stop basic_httpd
podman rm basic_httpd
首先,podman stop
命令会停止正在运行的容器。然后,podman rm
命令会删除指定的容器。请注意,如果容器正在运行,您需要首先停止它才能删除。
Podman提供了许多其他有用的命令和功能,比如拉取镜像、构建镜像、执行容器内命令等。熟悉这些命令将帮助您更有效地使用Podman来管理和运行容器。
此外,Podman还支持多种存储后端和网络选项,允许您根据需要自定义容器的存储和网络设置。您可以通过查阅Podman的官方文档来了解更多高级功能和配置选项。
总之,Podman是一个强大的容器管理工具,它可以帮助您轻松创建、管理和运行容器。通过熟悉其基本命令和选项,您将能够更有效地使用Podman来构建和部署容器化应用程序。
注意:如果在ps命令后面添加-a,Podman将显示所有容器。
检查正在运行的容器
您可以“检查”正在运行的容器以获取其元数据和详细信息。我们甚至可以使用inspect子命令来查看分配给容器的IP地址。由于容器以无根模式运行,因此不会分配IP地址,并且inspect命令的输出中该值将列为“none”。
podman inspect basic_httpd | grep IPAddress\":
"SecondaryIPAddresses": null,
"IPAddress": "",
测试httpd服务器
由于我们没有容器的IP地址,因此可以使用curl测试主机操作系统与容器之间的网络通信。以下命令应显示我们容器化httpd服务器的索引页面。
curl http://localhost:8080
查看容器的日志
您还可以使用Podman查看容器的日志:
podman logs <container_id>
10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
查看容器的进程ID
您还可以使用top命令观察容器中的httpd进程ID。
podman top <container_id>
UID PID PPID C STIME TTY TIME CMD
0 31873 31863 0 09:21 ? 00:00:00 nginx: master process nginx -g daemon off;
101 31889 31873 0 09:21 ? 00:00:00 nginx: worker process
在这里,您可以看到容器内运行的nginx主进程和工作进程的PID。这有助于了解容器内部的进程情况,以及它们之间的父子关系。
容器检查点
检查点是一个将容器状态写入磁盘的过程,同时停止容器内所有进程的运行。通过这种方式,容器可以在之后被恢复,并从检查点开始继续运行,就好像时间从未停止一样。这个特性需要系统上安装有CRIU 3.11或更高版本。
请注意,这个特性在无根模式下是不支持的。因此,如果你想尝试它,你需要以root身份重新创建你的容器,使用相同的命令但加上sudo。
要创建容器的检查点,请使用:
console
sudo podman container checkpoint <container_id>
恢复容器
恢复容器只对之前已经创建过检查点的容器有效。恢复的容器将继续从它被检查点的时刻开始运行。 要恢复容器,请使用:
sudo podman container restore <container_id>
恢复后,容器将像检查点之前一样再次响应请求。
curl http://<IP_address>:8080
迁移容器
要从一个主机实时迁移到另一个主机,首先在源系统的迁移源上创建容器的检查点,然后将其传输到目标系统,最后在目标系统上恢复它。在传输检查点时,可以指定一个输出文件。
在源系统上:
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
请注意,在迁移过程中,确保目标系统上已安装并配置好Podman和所有必要的依赖项,以便能够成功地恢复容器。此外,由于网络配置和存储挂载等可能因环境而异,所以在迁移之前,请确保源系统和目标系统的环境尽可能一致,以避免潜在的问题。
停止容器
要停止httpd容器,请使用以下命令:
podman stop <container_id>
您还可以使用ps子命令来检查一个或多个容器的状态。在这种情况下,我们应该使用-a参数来列出所有容器。
podman ps -a
删除容器
要删除httpd容器,请使用以下命令:
podman rm <container_id>
您可以通过运行podman ps -a来验证容器是否已被删除。
集成测试
关于如何在您的环境中设置和运行集成测试的更多信息,请查看Integration Tests的README.md。
更多信息
要了解更多关于Podman及其子命令的信息,请查看README.md页面上的asciiart演示。