惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
爱范儿
爱范儿
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位
罗磊的独立博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
大猫的无限游戏
大猫的无限游戏
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
Simon Willison's Weblog
Simon Willison's Weblog
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园_首页
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
IT之家
IT之家
博客园 - 聂微东
Spread Privacy
Spread Privacy
V2EX - 技术
V2EX - 技术
S
Security Affairs
宝玉的分享
宝玉的分享
V
V2EX
C
Cisco Blogs
博客园 - Franky
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
S
Securelist
J
Java Code Geeks
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
WordPress大学
WordPress大学
W
WeLiveSecurity
T
Threatpost
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志

Yee's Blog

腾讯云/轻量云 安装ArchLinux的个人记录 记录我的联想M720Q Arch Sway窗口管理器的安装和配置过程 Jenkins Linux安装 腾讯课堂、钉钉在线网课视频直播回放下载离线播放 Ceph块设备对RBD块设备操作LVM创建PV时报错 Ceph映射RBD块设备 2020年9月26日前端部门Vue考核 2020年9月26日后端部门Python考核 Nginx反向代理下载传输超过1G大文件时断开问题 Windows Server 2019 Datacenter M720q 安装记录 Ceph块设备基础及快照、克隆操作 从Ceph集群中删除OSD节点 Centos8配置 chrony NTP服务端及客户端 搭建Ceph集群 Ceph硬件准备 OSD与Pool池的常见操作及管理 Ceph用户管理 MacOS睡眠管理——让你的Mac睡的更香 初中古诗文必背篇目 Ansible 技巧之场 Ansible 包含和导入文件 Ansible 学习文档 Ansible 主机模式 Ansible 角色 Ansible 调整连接数 Splunk数据搜索和报表 Ansible 常用模块 Ansible 变量和事实 Ansible 任务控制 Ansible Playbook Ansible 基础概念 42Team-Flask框架-HTTP协议快速了解 42Team-Flask框架-路由和视图 42Team-Flask框架-请求与响应 42Team-Flask框架 42Team-Flask框架-Flask介绍 42Team-Flask框架-使用Pycharm来构建一个全新的Flask项目 How to install RHEL8(Centos) on Dell R710/R610 server Centos8安装Docker报错解决方案 Centos8安装Docker后容器内无法访问网络 使用NetworkManager来管理树莓派Ubuntu系统网络以及个人的体验优化 Linux 存储设备的挂载及识别 Firewalld 防火墙常用指令教程-常用规则(禁止Ping | 放行端口) Linux 查找系统中的文件 Linux 守护进程和控制服务 Linux SSH远程访问 42Team小组_Linux基础培训课件 如何在AmazeUI中当改变select标签后触发Vue方法的问题 使用Docker部署安装WordPress博客平台 在Raspberry树莓派中搭建NFS存储服务器 在 树莓派 Linux 中搭建匿名 danted socks5 代理服务器 HTTP与HTTPS区别随笔 Bash/Shell学习笔记
Docker或Podman容器内无法解析DNS问题多种解决方案
本文作者: YeeFire · 2020-03-08 · via Yee's Blog

新安装了Centos8使用Podman,但是在容器内怎样都无法解析域名DNS。尝试了网上大多数的解决办法依然无效。在当我一筹莫展之时我想到了奥利给叔告诉过我“遇到什么困难,都不要怕!微笑的面对他”!

最终还是想到了是不是firewalld没有开启IP地址伪装(IP转发)功能。三下五除二赶紧执行firewall-cmd --query-masquerade。果然没有开启,开启后解决问题,瞬间晴朗。

下面是我和网络上其他人对于Docker容器内无法解析DNS地址的问题总结。

开机防火墙IP地址伪装(IP地址转发)功能

如果使用的是Centos(RHEL),并且没有关闭Firewalld防火墙,你需要留意是否开启了IP转发功能。

sudo firewall-cmd --query-masquerade返回的结果为no,则没有开启。yes则为已经开启了IP地址转发,如果问题没有解决,请继续往下看。

sudo firewall-cmd --add-masquerade --permanent && sudo firewall-cmd --reload开启IP地址转发并生效。开启后请再次尝试容器内是否可以正常解析域名。

如果你想了解更多关于firewalld,请看我的另一篇博文这可能是最全的firewalld防火墙常用指令教程

开启内核IP地址转发

cat /proc/sys/net/ipv4/ip_forward查看是否已经开启,0为关闭状态,1为开启状态。如果已经开启请尝试其他解决方案。

如果返回值为0,则为关闭状态。切换到root用户执行echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf,继续执行sysctl -p /etc/sysctl.conf使之永久生效。

之后需要重新启动网络服务来使IP地址转发功能生效:

如果你是Centos(RHEL)系,需要重新启动network服务。执行systemctl restart network重启服务后生效。

如果是Debian/Ubuntu系列的发行版,执行/etc/init.d/procps restart/etc/init.d/procps.sh restart生效。

配置一个正确的DNS

正常情况下,运行的容器会与主机使用相同的resolv.conf文件来进行DNS解析,也就是说如果在本机上可以正常解析域名,那么只要开启了IP地址转发的情况下,容器中也可以正常解析。

你可以先查看你的resolv.conf文件文件配置的是否正确。

cat /etc/resolv.conf

如果发现DNS服务器地址有误,你可以手动编辑此文件,但是NetworkManager会在下次启动时网卡时对该文件还原为它的配置。所以,我们直接使用NetworkManager来更改我们的DNS比较妥当些。如果你的网络不是由NetworkManager管理。你可以试试看直接修改/etc/resolv.conf文件。

执行sudo nmcli connection来查看当前所有网络连接。

sudo nmcli connection modify ethernet-eth0(你的网卡连接名) ipv4.dns=114.114.114.114

sudo nmcli connection up ethernet-eth0(你的网卡连接名)重启网卡,使手动配置的DNS生效。

强制Docker使用自定义的DNS地址

vim /etc/docker/daemon.json修改该文件,如果没有该文件的话直接新建即可。



{
"dns": ["114.114.114.114"]
}

希望这篇文章能解决你的问题!如果还是不行,请在评论区留言,将你的大致情况说说看,我们一起研究研究看。


我是一名Linux初学者,如果你与我一样喜欢折腾,喜欢Linux,那么请加入我的电报群:
https://t.me/yeefire_blog(Telegram),在这里畅所欲言,共同学习进步。