xiaoxiao
发布于 2024-12-22 / 9 阅读 / 0 评论 / 0 点赞

podman v3升级v4导致dns不可用的问题解决

问题一: root用户使用出现 ERRO[0000] runroot must be set

旧版本更换driver参数可以不指定runroot和graphRoot,但是运行会有告警信息,新版本必须补全配置。

/etc/containers/storage.conf

[storage]
driver = "btrfs"
runroot = "/run/containers/storage"
graphRoot = "/var/lib/containers/storage"

问题一: failed to find plugin "dnsname"

dnsname网络插件已经被弃用,4.0使用netavark作为默认网络后端。

https://github.com/containers/netavark/

解决办法需要将默认网络后端修改正确,并且重新创建新的网络连接到容器。

1. 查看当前用户的储存目录

因为podman是rootless容器,每个用户的目录不一样。需要找到对应的目录。

podman info --format json | jq .store.graphRoot
# 没有jq工具用grep 
podman info --format json | grep graphRoot

2.修改defaultNetworkBackend

先查出以前所有容器的网络配置

 podman ps -a --format "{{.ID}}" | xargs -I ID podman inspect ID --format json | jq '.[0].Name,(.[0].NetworkSettings.Networks | keys | .[0])'

进去graphRoot目录后执行

cd $graphRoot
echo -n 'netavark' > defaultNetworkBackend

后面就是补配置的过程

podman network create $NETWORK_NAME
podman network connect $NETWORK_NAME $CONTAINER_NAME

删除旧的cni配置,目录在~/.config/cni/net.d


......这个问题找了好久,幸亏我有一个新的系统,我在podman info命令中对比出来了defaultNetworkBackend不同


评论