Docker ubuntn 使用apt-get update报错

在docker 容器中执行apt-get update有时候会报错,当然造成错误的原因有很多情况,具体情况具体分析,

APT Hash sum mismatch错误的常见解决方法总结这篇博客写的不错,在此感谢博主提供的思路。

以下是本人解决docker容器中执行apt-get update报错的解决办法(踩了好多坑,血淋淋的阿,终于好用了。):

root@33c5b2ae7edc:/# apt-get update
Err:1 http://archive.ubuntu.com/ubuntu xenial InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:2 http://security.ubuntu.com/ubuntu xenial-security InRelease
  Temporary failure resolving 'security.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu xenial-backports InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Reading package lists... Done
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease  Temporary failure resolving 'security.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.

<1> 首先配置docker容器的DNS

cat /etc/resolv.conf       该命令查看容器和宿主机的DNS设置,容器和宿主机的DNS设置应该一致。

docker DNS的设置可以通过启动容器时添加参数  --dns  8.8.8.8  来设置(本次有效)

或者通过 /etc/default/docker的DNS参数来进行永久设置,然后重启DOCKER生效,

     export http_proxy="http://10.1.9.100:808/"
   DOCKER_OPTS="--dns 210.83.210.155 --dns 127.0.1.1"

 

sudo service docker restart

<2> 查看容器 /etc/apt/目录中是否有apt.conf文件,该文件配置了代理:

Acquire::http::proxy "http://10.1.9.100:8080/";
Acquire::ftp::proxy "ftp://10.1.9.100:8080/";
Acquire::https::proxy "https://10.1.9.100:8080/";

如果没有该文件,可以将宿主机中的apt.conf文件拷贝到容器对应目录中。

<3>对代理服务器进行设置:

还有些开发者遇到的问题,是因为公司的Proxy的设置。
如果读者朋友使用了Proxy,那么可以尝试,在容器的 /etc/apt/apt.conf.d/ 目录下创建一个名称为99fixbadproxy 的文件

$ sudo gedit /etc/apt/apt.conf.d/99fixbadproxy

把以下文本复制到上述文件中,然后保存退出:

Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy    true;

<4> 清cache缓存:

$ sudo apt-get clean  
$ sudo apt-get update --fix-missing 

<5> 可以更改APT源,网上有挺多的国内源,可以搜索更改办法。

当在Ubuntu系统上尝试通过`sudo apt-get update`更新包列表时,如果出现"没有可用的release file"这样的错误,这通常意味着apt源有问题或者是仓库地址配置有误。以下是几个可能的原因和解决步骤: 1. **源镜像未同步**:可能是网络连接问题或者apt源服务器暂时不可达。你可以检查网络连接是否正常,然后稍后再试。 2. **仓库地址过期或变动**:有时官方仓库地址可能会更改,确保你使用apt源URL是最新的。可以在Ubuntu官方文档或者Docker官网查找正确的Ubuntu版本对应仓库地址。 3. **配置文件损坏**:打开`/etc/apt/sources.list` 或 `/etc/apt/sources.list.d/*.list` 文件,检查源列表是否正确。如果有错误,需要手动修改或删除有问题的行,然后再尝试更新。 4. **添加Pinning**:如果源是第三方提供的,可能需要在sources.list文件里添加pinning信息(如`deb http://example.com precise main restricted universe multiverse`),指示apt使用特定的版本库。 5. **清理缓存**:尝试先运行`sudo apt-get clean && sudo apt-get autoclean` 清除旧的下载包和索引,再进行更新。 如果以上方法都无效,可以考虑删除原有的软件包列表和索引,然后从头开始更新: ``` sudo apt-get remove --purge software-properties-common sudo rm -rf /var/lib/apt/lists/* sudo apt-get update ``` 完成后记得恢复你的Docker相关的设置,并再次尝试安装Docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值