介绍

Podman是一个用于在Linux系统上构建、管理和运行OCI标准容器的CLI工具,是Docker的直接替代品。

由红帽主导,与开源社区一起开发。在RHEL8开始预装并替代Docker。命令上与Docker并无区别。

主要特点是不需要守护进程,可以支持非root用户运行容器,提高了安全性和可访问性。

本教程也适用于RHEL其他衍生版本,如Rocky Linux。

安装

RHEL8-9安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dnf install podman podman-docker

# 安装podman及docker的命令兼容程序。

systemctl enable --now podman

# 启动并设置开机启动。

podman run hello-world

docker run hello-world

# 命令示例,两者都可用,但docker命令无法自动不全。

安装podman-compose(需要提前安装epel yum源)

1
2
3
4
5
6
7
8
9
dnf install podman-compose

# 安装compose工具,用于管理或运行多个容器。可直接替代docker-compose。

podman-compose up -d
podman-compose down

# 命令示例

默认仓库顺序

说明

红帽把自己的两个仓库源放在了前面,导致拉取前两个仓库源不存在的镜像时候,要手动选择。

很麻烦🤬

1
2
3
4
5
6
7
podman pull songxwn/webnettools:1.4
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
? Please select an image:
▸ registry.access.redhat.com/songxwn/webnettools:1.4
registry.redhat.io/songxwn/webnettools:1.4
docker.io/songxwn/webnettools:1.4

修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vim /etc/containers/registries.conf


unqualified-search-registries = ["docker.io", "registry.redhat.io", "registry.access.redhat.com"]


# 将unqualified-search-registries选项,修改为上面的即可。


systemctl restart podman

# 然后重启一下即可。


PS:也可以修改为国内的Docker Hub源,如网易的 https://hub-mirror.c.163.com

参考

https://computingforgeeks.com/create-docker-container-registry-with-podman-letsencrypt/