如何在 Debian 11 上安装 Podman 作为 Docker 的替代品
在此页
- 先决条件
- 安装 Podman
- 添加 OCI 注册表
- 如何使用 Podman
- 如何停止和删除容器
- 开始使用 Podman
- 结论
Podman(POD MANager)是一个符合 OCI 标准的容器引擎,由 Red Hat 开发,作为 Docker 的直接替代品。它用于通过命令行界面管理和运行容器、图像和卷。 Docker 和 Podman 都是类似的软件。唯一的区别是 Podman 不需要守护进程来运行容器,而 Docker 需要 Docker Engine 守护进程。 Podman 使用 libpod 库来管理整个容器生态系统。
在本教程中,我们将向您展示如何在 Debian 11 上安装和使用 Podman。
先决条件
- 运行 Debian 11 的服务器。
- 在服务器上配置了根密码。
安装 Podman
Podman 包包含在 Debian 11 默认存储库中。您只需运行以下命令即可安装它:
apt-get install podman -y
安装 Podman 后,使用以下命令验证 Podman 版本:
podman --version
您应该在以下输出中看到 Podman 版本:
podman version 3.0.1
您可以使用以下命令获取 Podman 的更多信息:
podman info
您将获得以下输出:
host:
arch: amd64
buildahVersion: 1.19.6
cgroupManager: systemd
cgroupVersion: v2
conmon:
package: 'conmon: /usr/bin/conmon'
path: /usr/bin/conmon
version: 'conmon version 2.0.25, commit: unknown'
cpus: 2
distribution:
distribution: debian
version: "11"
eventLogger: journald
hostname: debian11
idMappings:
gidmap: null
uidmap: null
kernel: 5.10.0-8-amd64
linkmode: dynamic
memFree: 3365183488
memTotal: 4122267648
ociRuntime:
name: crun
package: 'crun: /usr/bin/crun'
path: /usr/bin/crun
version: |-
crun version 0.17
commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a
spec: 1.0.0
+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL
os: linux
remoteSocket:
exists: true
path: /run/podman/podman.sock
security:
apparmorEnabled: true
capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
rootless: false
seccompEnabled: true
selinuxEnabled: false
添加 OCI 注册表
Podman 使用注册表配置文件 /etc/containers/registries.conf 从互联网上拉取所有容器镜像。所以你需要编辑它并定义注册表:
nano /etc/containers/registries.conf
在文件末尾添加以下行:
[registries.insecure]
registries = [ ]
# If you need to block pull access from a registry, uncomment the section below
# and add the registries fully-qualified name.
# Docker only
[registries.block]
registries = [ ]
完成后保存并关闭文件。
如何使用播客
在本节中,我们将向您展示如何使用 Podman 命令拉取镜像并运行容器。
要拉取 Debian 映像,请运行以下命令:
podman pull debian
您将获得以下输出:
Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/debian:latest...
Getting image source signatures
Copying blob 647acf3d48c2 done
Copying config 827e561138 done
Writing manifest to image destination
Storing signatures
827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
您可以使用以下命令查看下载的图像:
podman images
您将获得以下输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/debian latest 827e5611389a 11 days ago 129 MB
接下来,使用以下命令从 Debian 映像运行容器:
podman run -dit debian:latest
您将获得以下输出:
f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103
您可以使用以下命令列出所有正在运行的容器:
podman ps
您应该看到以下输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f85c4df5ab78 docker.io/library/debian:latest bash 13 seconds ago Up 13 seconds ago competent_cori
要检查正在运行的容器,请通过指定容器 ID 运行 Podman 命令:
podman inspect f85c4df5ab78
您将获得以下输出:
[
{
"Id": "f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103",
"Created": "2021-11-28T07:00:12.795302341Z",
"Path": "bash",
"Args": [
"bash"
],
"State": {
"OciVersion": "1.0.2-dev",
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 6881,
"ConmonPid": 6878,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-11-28T07:00:13.551753552Z",
"FinishedAt": "0001-01-01T00:00:00Z",
"Healthcheck": {
"Status": "",
"FailingStreak": 0,
"Log": null
}
},
要检查容器日志,请运行以下命令:
podman logs f85c4df5ab78
如果要连接到正在运行的容器,请运行以下命令:
podman exec -it f85c4df5ab78 /bin/bash
您将进入容器外壳,如下所示:
:/#
要退出容器 shell,请运行以下命令:
:/# exit
如何停止和删除容器
您还可以使用 Podman 启动、停止和删除容器。
要停止正在运行的容器,请运行以下命令:
podman stop f85c4df5ab78
您现在可以使用以下命令验证已停止的容器:
podman ps -a
您应该看到以下输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f85c4df5ab78 docker.io/library/debian:latest bash 3 minutes ago Exited (137) 10 seconds ago competent_cori
要删除已停止的容器,请运行以下命令:
podman rm f85c4df5ab78
如果要停止最新的容器,请运行以下命令:
podman stop --latest
要启动最新的容器,请运行以下命令:
podman start --latest
要删除最新的容器,请运行以下命令:
podman rm --latest
要删除所有正在运行的容器,请运行以下命令:
podman rm -f `podman ps -aq`
要删除图像,请运行以下命令:
podman rmi 827e5611389a
您将获得以下输出:
Untagged: docker.io/library/debian:latest
Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
开始使用 Podman
有关如何使用 Podman 创建图像、卷和容器的详细指南,请参见此处:Podman 入门:管理图像、容器和卷
结论
在上面的帖子中,我们解释了如何在 Debian 11 上安装和使用 Podman。您现在可以使用 Podman 作为 Docker 的替代品来运行和管理容器。