【排错】docker build时报 Could not resolve ‘archive.ubuntu.com‘错误的解决方式

本文解决在CentOS7环境下使用Docker构建基于Ubuntu的Flask应用镜像时遇到的源站无法解析问题。通过配置Docker的DNS服务器解决了apt-get命令无法正常工作的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在centos7主机上构建docker镜像的时候写了如下的Dockerfile

FROM ubuntu:14.04 
RUN apt-get update 
RUN apt-get install -y python 
RUN apt-get install -y python-pip 
RUN apt-get clean all 
RUN pip install flask 
ADD hello.py /tmp/hello.py
EXPOSE 5000 
CMD ["python","/tmp/hello.py"]

使用docker build -t flask .命令构建的时候命令行报如下错误

Step 2/9 : RUN apt-get update
 ---> Running in 0eec7173f903

Ign https://esm.ubuntu.com trusty-infra-security InRelease
Err http://archive.ubuntu.com trusty InRelease

Err http://archive.ubuntu.com trusty-updates InRelease

Err http://archive.ubuntu.com trusty-backports InRelease

Err http://archive.ubuntu.com trusty Release.gpg
  Could not resolve 'archive.ubuntu.com'
Err http://archive.ubuntu.com trusty-updates Release.gpg
  Could not resolve 'archive.ubuntu.com'
Err http://archive.ubuntu.com trusty-backports Release.gpg
  Could not resolve 'archive.ubuntu.com'
Err http://security.ubuntu.com trusty-security InRelease

解析出现了问题,查了一些攻略,终于可以了。

在/etc/sysconfig/docker这个文件中,增加一行

# docker-latest daemon can be used by starting the docker-latest unitfile.
# To use docker-latest client, uncomment below lines
#DOCKERBINARY=/usr/bin/docker-latest
#DOCKERDBINARY=/usr/bin/dockerd-latest
#DOCKER_CONTAINERD_BINARY=/usr/bin/docker-containerd-latest
DOCKER_OPTS="–dns 8.8.8.8 –dns 8.8.4.4"
#DOCKER_CONTAINERD_SHIM_BINARY=/usr/bin/docker-containerd-shim-latest
 

 然后重启docker服务

 systemctl restart docker

 重新运行构建命令

docker build -t flask .

 apt-get命令运行正常

Step 2/9 : RUN apt-get update
 ---> Running in 21b68558cd3f

Get:1 http://security.ubuntu.com trusty-security InRelease [65.9 kB]
Ign http://archive.ubuntu.com trusty InRelease
Get:2 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB]
Get:3 https://esm.ubuntu.com trusty-infra-security InRelease
Get:4 http://security.ubuntu.com trusty-security/main amd64 Packages [1032 kB]
Get:5 https://esm.ubuntu.com trusty-infra-updates InRelease
Get:6 http://archive.ubuntu.com trusty-backports InRelease [65.9 kB]
Get:7 https://esm.ubuntu.com trusty-infra-security/main amd64 Packages
Hit http://archive.ubuntu.com trusty Release.gpg
Get:8 http://archive.ubuntu.com trusty-updates/main amd64 Packages [1460 kB]
Get:9 https://esm.ubuntu.com trusty-infra-updates/main amd64 Packages
Get:10 http://security.ubuntu.com trusty-security/restricted amd64 Packages [18.1 kB]
Get:11 http://archive.ubuntu.com trusty-updates/restricted amd64 Packages [21.4 kB]
Get:12 http://security.ubuntu.com trusty-security/universe amd64 Packages [378 kB]
Get:13 http://archive.ubuntu.com trusty-updates/universe amd64 Packages [671 kB]
Get:14 http://archive.ubuntu.com trusty-updates/multiverse amd64 Packages [16.1 kB]
Get:15 http://archive.ubuntu.com trusty-backports/main amd64 Packages [14.7 kB]
Get:16 http://archive.ubuntu.com trusty-backports/restricted amd64 Packages [40 B]
Get:17 http://security.ubuntu.com trusty-security/multiverse amd64 Packages [4730 B]
Get:18 http://archive.ubuntu.com trusty-backports/universe amd64 Packages [52.5 kB]
Get:19 http://archive.ubuntu.com trusty-backports/multiverse amd64 Packages [1392 B]
Hit http://archive.ubuntu.com trusty Release
Get:20 http://archive.ubuntu.com trusty/main amd64 Packages [1743 kB]
Get:21 http://archive.ubuntu.com trusty/restricted amd64 Packages [16.0 kB]
Get:22 http://archive.ubuntu.com trusty/universe amd64 Packages [7589 kB]
Get:23 http://archive.ubuntu.com trusty/multiverse amd64 Packages [169 kB]
Fetched 14.1 MB in 8s (1588 kB/s)
Reading package lists...
 ---> e606d6bd2677
Removing intermediate container 21b68558cd3f
Step 3/9 : RUN apt-get install -y python
 ---> Running in 8d1252079ae3

 就是解析的问题,要给docker配置文件添加dns的服务器地址。

<think>嗯,用户这次聚焦在Yum源配置问题,特别是Aliyun镜像解析失败的错误。结合历史对话和引用内容,问题可以拆解为:网络连通性、DNS配置、仓库文件错误、订阅管理干扰四个层面。用户作为系统管理员,应该在RedHat/CentOS环境操作,情绪比较急切——因为引用[4]显示连基础软件安装都失败了。需要给出可立即操作的诊断步骤,同时注意引用[3][5]提供的阿里云镜像配置方案。先从最简单的网络诊断开始比较稳妥:比如用curl测试mirrors.aliyun.com是否能访问。这个操作既安全又能快速定位问题分层。如果DNS解析失败(如引用[4]的报错特征),立即转向nslookup检查;如果连接超时,可能是防火墙拦截了HTTP请求。特别注意用户环境可能是RedHat订阅模式,需要参考引用[1]的重装方案和引用[2]的源切换警告——避免出现订阅冲突。引用[5]的阿里云EPEL配置模板可以直接复用,但要把$releasever替换成具体版本(因为引用[4]显示用户系统没正确解析变量值)。最后补充应急方案:当用户急需安装软件时,临时用IP地址代替域名虽然不优雅但能救急(需提前验证IP可用性)。毕竟生产环境断网时,优先恢复服务比完美排错更重要。</think> ## 解决Aliyun镜像解析失败的YUM源配置问题 ### 问题诊断步骤 1. **验证DNS解析能力** ```bash ping mirrors.aliyun.com nslookup mirrors.aliyun.com ``` - ❌若返回`unknown host`或超时,说明DNS解析失败(如引用[4]) - ✅正常应返回IP地址(如:`203.0.113.10`) 2. **检查网络连接** ```bash curl -I http://mirrors.aliyun.com ``` - 若出现`curl: (6) Could not resolve host`确认DNS问题 - 若出现`curl: (7) Failed connect`说明网络不通 ### 解决方案 #### 方案一:修复DNS配置 1. 修改DNS服务器 ```bash echo "nameserver 114.114.114.114" >> /etc/resolv.conf echo "nameserver 8.8.8.8" >> /etc/resolv.conf ``` 2. 刷新DNS缓存 ```bash systemctl restart network ``` #### 方案二:手动指定IP(临时方案) ```bash # 获取最新IP(示例) echo "203.0.113.10 mirrors.aliyun.com" >> /etc/hosts ``` #### 方案三:重构Aliyun源配置(引用[5]) ```bash # 备份原repo文件 mkdir ~/repo_backup && mv /etc/yum.repos.d/* ~/repo_backup/ # 创建阿里云Base源 cat > /etc/yum.repos.d/aliyun.repo <<EOF [base] name=Aliyun CentOS-$releasever - Base baseurl=https://mirrors.aliyun.com/centos/\$releasever/os/\$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [epel] name=Aliyun EPEL baseurl=https://mirrors.aliyun.com/epel/\$releasever/\$basearch/ enabled=1 gpgcheck=0 EOF ``` #### 方案四:修复订阅冲突(RedHat系统) ```bash # 禁用RedHat订阅源(引用[1]) sudo subscription-manager config --rhsm.manage_repos=0 # 清理订阅缓存 sudo rm -rf /var/cache/yum/* ``` ### 最终验证 ```bash yum clean all yum makecache yum install -y epel-release ``` - ✅ 应显示从aliyun镜像下载安装包 ### 相关配置文件说明 ```ini [epel] name=Extra Packages for Enterprise Linux 7 baseurl=https://mirrors.aliyun.com/epel/7/$basearch/ # $releasever需替换为具体版本 enabled=1 gpgcheck=0 # 测试期间可临时关闭验证(引用[5]) ``` > ⚠️ 注:若需保持GPG验证,请手动导入密钥: > `rpm --import https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7` [^1]: YUM重装修复基础功能 [^4]: DNS解析失败错误示例 [^5]: 阿里云镜像配置方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值