Huangquan-Creek 2024-01-31 15:43 采纳率: 76%
浏览 12
已结题

docker 内部无法使用apt-get

docker 使用apt-get 报错。在网上找了很多文章都没有用。
第一 有人说,网络不一致,创建容器时加参数 --net=host 问题没解决。
第二 换源,将/etc/apt/sources.list 换为下列源。问题还是没有解决。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
**_报错如下_**

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/526ef598c0b0484b88bbd8822d754205.png "#left")

  • 写回答

4条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-01-31 15:46
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    从您提供的错误信息来看,问题可能是由于 DNS 解析失败导致的。在 Docker 容器内部无法访问网络,即使尝试了更换源和使用 --net=host 参数。

    这里有几个解决步骤可以尝试:

    1. DNS 问题

      • 在运行 Docker 容器时添加 --dns 参数,指定一个可靠的 DNS 服务器地址,例如:
        docker run --dns 8.8.8.8 --dns 8.8.4.4 -it your_image_name /bin/bash
        
        这里使用的是 Google 公共 DNS(8.8.8.8 和 8.8.4.4),您可以根据自身网络环境选择合适的 DNS 服务器。
    2. 配置默认 DNS

      • 如果需要所有容器都使用特定 DNS,可以在 Docker 的 daemon 配置文件 /etc/docker/daemon.json 中加入以下内容,并重启 Docker 服务:
        {
            "dns": ["8.8.8.8", "8.8.4.4"]
        }
        
    3. 网络策略检查

      • 确认宿主机上的防火墙或者网络安全策略没有阻止容器访问外部网络。
    4. 代理设置

      • 如果您的网络环境需要通过代理访问外网,请确保在 Docker 容器启动时设置好 HTTP(S) 代理环境变量,例如:
        docker run -e http_proxy=http://your_proxy:port -e https_proxy=https://your_proxy:port -it your_image_name /bin/bash
        
    5. 重新拉取镜像或构建镜像时设置代理

      • 如果问题出在构建镜像阶段无法 apt-get update,那么在 Dockerfile 中也可以设置代理。

    尝试以上步骤后,应该能够解决容器内 apt-get 无法正常工作的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 1月31日