Podman基础

安装Podman配置

 sudo pacman -S podman podman-dnsname podman-compose

# 配置Podman使用Docker源
sudo cp /etc/containers/registries.conf /etc/containers/registries.conf.bak
sudo vim /etc/containers/registries.conf

# 添加
unqualified-search-registries = ["docker.io"]

[[registry]]
location = "docker.io"
[[registry.mirror]]
location = "docker.mirrors.ustc.edu.cn"

映射端口的操作使用 -p 宿主机端口:容器端口 来完成
挂载一个主机目录作为数据卷, -v 本地目录:容器内目录 (本地目录必须为绝对路径)

Podman_rootless

用户ID错误的情况

usermod --add-subuids 100000-165535 --add-subgids 100000-165535 eonun

# 或
echo eonun:10000:65535 >> /etc/subuid
echo eonun:10000:65535 >> /ech/subgid 

reboot

内核配置及安装依赖

# 检查内核的值
# 启用 kernel.unprivileged_userns_clone
sysctl kernel.unprivileged_userns_clone
# kernel.unprivileged_userns_clone=1 为启用

sudo pacman -S fuse-overlayfs slirp4netns aardvark-dns

网络测试

podman network create --subnet 10.9.0.0/16 testNet

podman run --name test1 --network testNet --ip=10.9.0.33 --add-host=db2:10.9.0.44 -e POSTGRES_PASSWORD=password -d redis:alpine
podman run --name test2 --network testNet --ip=10.9.0.44 --add-host=db1:10.9.0.33 -e POSTGRES_PASSWORD=password -d redis:alpine

podman exec -it test1 sh
ping db2
ping test2

podman exec -it test2 sh
ping db1
ping test1

配置开机启动

# root 方式
sudo podman generate systemd --restart-policy=always -t 1 --name -f container_Name
sudo mv container-container_Name.service /etc/systemd/system/
sudo systemctl enable container-container_Name.service --now

# 普用用户
podman generate systemd --restart-policy=always -t 1 --name -f container_Name
mkdir -p ~/.config/systemd/user
mv container-container_Name.service ~/.config/systemd/user/
systemctl --user enable container-container_Name.service --now

查看网络信息

# 查看 CloudNet 网卡的网关
podman network inspect CloudNet | grep gateway
# 查看 CloudNet 网络地址段
podman network inspect CloudNet | grep subnet
# 查看 NextCloud 容器的 IP 地址
podman inspect NextCloud | grep IPAddress