docker出现pip无法安装软件包
说明
RUN pip install -r requirements.txt
收到错误
Step 3 : RUN pip install -r requirements.txt
---> Running in fe0b84217ad1
Collecting blinker==1.3 (from -r requirements.txt (line 1))
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', gaierror(-2, 'Name or service not known'))': /simple/blinker/
原因:pip无法从docker容器内部访问任何软件包
解决措施:Docker没有使用正确的DNS服务器
解决措施
1、修改网卡设置
# 先找到文件位置
find / -name ifcfg-eth*
默认允许Network Manager管理DNS,所以首先设置为no,然后操作DNS设置
# 编辑
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 修改
NM_CONTROLLED="no" //是否允许Network Manager管理,设置为no
2、设置DNS内容
还是在etc/sysconfig/network-scripts/ifcfg-eth0中修改
PEERDNS="yes"
DNS1="8.8.8.8" # Google DNS
这种设置方案是以网卡中设置的DNS为主,resolv.conf中按照网卡设置的DNS内容自动生成,以后想修改DNS,必须修改网卡中的设置才不会在服务器重启之后出现DNS设置失效的问题。
3、重启网卡
service network restart
可能遇到的问题
WARNING: IPv4 forwarding is disabled. Networking will not work.
第一步:在宿主机上执行
echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
第二步:重启network和docker服务
systemctl restart network && systemctl restart docker