centos 8 安装 docker 以及兼容性问题处理
安装问题处理
update 2021/1/26: centos 8 stream 已无需手动安装containerd.io,新的docker版本已兼容centos 8,此文仅留作异常处理方法备查。
redhat做了自己的容器解决方案,并在软件源中限制了containerd.io 的新版本安装。
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/building_running_and_managing_containers/index
centos8目前直接安装会提示containerd.io版本不支持的问题,此时可以通过--nobest选项安装,不过这样安装,每次更新时都会有警告提示。所以最好还是先装好高版本的containerd.io再装docker-ce
点此手动浏览rpm源查看containerd.io最新版本
dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#需预先查看containerd.io rpm包在线地址
dnf install http://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/containerd.io-<version>.el8.x86_64.rpm
dnf install docker-ce
docker的rpm官方源地址为:https://download.docker.com/linux/centos
也可使用镜像地址:http://mirrors.aliyun.com/docker-ce/linux/centos
dns问题处理#
由于centos 8 将iptables替换为nftables,docker存在兼容性问题,会出现DNS无法解析的bug。你可以busybox容器校验
docker run busybox nslookup baidu.com
参考:
https://forums.centos.org/viewtopic.php?f=54&t=74270
https://github.com/docker/for-linux/issues/957#issuecomment-658649036
有三种方式可以处理DNS的兼容性问题,推荐使用第1方案。如不想使用第1方案,可将2,3配合使用。
1.让firewalld使用iptables
#修改/etc/firewalld/firewalld.conf
#FirewallBackend=nftables
FirewallBackend=iptables
sudo systemctl restart firewalld.service
参考:https://github.com/docker/for-linux/issues/957#issuecomment-627166787
2.启用masquerade
注意:--publish发布的端口 需额外设置防火墙开放
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload
参考:https://linuxconfig.org/how-to-install-docker-in-rhel-8 中的评论
3.添加docker0网口为信任
注意:docker-compose中仍存在dns解析问题
firewall-cmd --permanent --zone=trusted --add-interface=docker0
参考:https://forums.centos.org/viewtopic.php?f=54&t=74270
其他参考:
https://www.techrepublic.com/article/a-better-way-to-install-docker-on-centos-8/
https://linuxconfig.org/how-to-install-docker-in-rhel-8
https://yq.aliyun.com/articles/110806
https://docs.docker.com/network/iptables/#integration-with-firewalld
fedora cgroup v2:
https://medium.com/nttlabs/cgroup-v2-596d035be4d7
https://linuxconfig.org/how-to-install-docker-on-fedora-31
本文采用 知识共享署名 4.0 国际许可协议 进行许可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?