开发机从 Ubuntu Server 20.04.6 升级到 Ubuntu Server 24.04.1 LTS 版本, 没遇到什么大问题. 但是发现 podman
变成了 [installed,local]
版本, 没有被自动升级. 但是看了一下容器,镜像,Volume还在.
- 卸载当前版本
我之前用的是kubic社区的podman源, 需要先卸载 sudo apt remove podman
再删除掉apt能识别出来不再需要的依赖: sudo apt autoremove
此时如果直接安装新版本 podman 可能会有问题, 提示 /etc/containers/containers.conf 被包 containers-common
使用.
可以尝试: sudo apt remove containers-common buildah crun
. 卸载前通过 sudo apt list --installed | grep installed,local
确认是否为本地版本.
还是不行的话就只能手动逐个卸载了:
1 | sudo dpkg --remove crun |
总之需要保证之前的版本都卸载掉. 不需要(也不要)运行 purge
. 会丢失数据.
- 安装新版本
sudo apt install podman golang-github-containernetworking-plugin-dnsname
其中 golang-github-containernetworking-plugin-dnsname
这个不清楚为什么在 Ubuntu 24.04 源里名字这么奇怪, 根据文档来看应该是 podman-plugins
或者 podman-dnsname
才对. Podman 4.x 版本删除了 dnsname
这个插件, 导致通过 compose 拉起的容器组之间不能直接通过 service 名字做寻址.
这个名字是通过 sudo apt search dnsname
找到的.
如果不安装这个包, 可能会看到类似下面的错误:
1 | WARN[0000] Error validating CNI config file /home/kiritow/.config/cni/net.d/wgop-net-wg0.conflist: [failed to find plugin "dnsname" in path [/usr/local/libexec/cni /usr/libexec/cni /usr/local/lib/cni /usr/lib/cni /opt/cni/bin]] |
装完之后在 /usr/lib/cni
下应该会看到 dnsname
插件.
- 安装Docker-Compose
由于Docker Compose V2已经从pip包升级合并到docker
命令了, 因此我们需要使用docker官网提供的docker-compose
独立安装包: Install Compose standalone
注意: 之前提到的 Ubuntu 22.04 里面 containernetworking-plugins
的问题似乎已经解决了, 现在安装 podman
会正确的安装这个依赖包. 参考之前的文章
参考
containers/dnsname: name resolution for containers 这个插件现在已经archive了.
下面的参考没太大价值, 更多感觉还是要看 dnsname
这个插件的文档: Using the dnsname plugin with Podman
Podman network dns option not working with the DNS plugin enabled #20911
Impossible to override container’s DNS with network #17499