【问题标题】:Not able to execute apt-update in Docker无法在 Docker 中执行 apt-update
【发布时间】:2022-08-15 05:42:51
【问题描述】:

我无法运行具有以下内容的简单 Docker 映像:

FROM debian:buster

RUN apt-get update

我不断收到这些错误消息:

#0 20.18 Err:1 http://security.debian.org/debian-security bullseye-security InRelease                                                                                                                                                                                                                                                     
#0 20.18   Temporary failure resolving \'security.debian.org\'                                                                                                                                                                                                                                                                              
#0 20.18 Err:2 http://deb.debian.org/debian bullseye InRelease                                                                                                                                                                                                                                                                            
#0 20.18   Temporary failure resolving \'deb.debian.org\'
#0 40.20 Err:3 http://deb.debian.org/debian bullseye-updates InRelease
#0 40.20   Temporary failure resolving \'deb.debian.org\'

我尝试了互联网上提到的十几种可能的解决方案,例如:

  • {\"dns\": [\"192.168.1.1\", \"8.8.8.8\"]} 添加到/etc/docker/daemon.json
  • 运行sudo systemctl restart docker.service
  • 运行docker system prune
  • 重启我的操作系统(Arch Linux)
  • 尝试了不同的图像,甚至是 ubuntu 的图像,但同样的问题

但他们都没有成功。任何人都可以帮助我吗?

编辑 1

我在我的系统上完全重新安装了 docker,没有任何运气。仍然没有连接到互联网。目前,我不知道该怎么做才能解决这个问题。

编辑 2: 菲利普要求的结果。

$ docker run busybox ip a
latest: Pulling from library/busybox
19d511225f94: Pull complete 
Digest: sha256:3614ca5eacf0a3a1bcc361c939202a974b4902b9334ff36eb29ffe9011aaad83
Status: Downloaded newer image for busybox:latest
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

$ docker run busybox ip r
default via 172.17.0.1 dev eth0 
172.17.0.0/16 dev eth0 scope link  src 172.17.0.2 

以防万一,我的 iptables:

$ sudo  iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  anywhere             anywhere            
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere     
  • 你可以在容器中运行ping 8.8.8.8 吗?
  • 从我的主机我可以,但不能从 docker 容器。我尝试了一个安装了 ping 的 docker 映像hub.docker.com/r/willfarrell/ping,但没有成功。
  • 你能运行docker run busybox ip adocker run busybox ip r 并粘贴结果吗?
  • @Philippe 见编辑 2 :)

标签: linux docker debian


【解决方案1】:

这可能是您的本地 docker 设置。你可以从其他容器联网吗?如果是这样,我们需要查看debian:buster;如果不是,则可能是您的主机/泊坞窗设置。

值得我在这里没有问题(使用testing,因为我在本地没有buster):

$ docker run --rm -ti debian:testing apt update
Get:1 http://deb.debian.org/debian testing InRelease [130 kB]
Get:2 http://deb.debian.org/debian testing/main amd64 Packages [8535 kB]
Fetched 8665 kB in 2s (5011 kB/s) 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
84 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ 

我在 Ubuntu 22.04 中的主机操作系统,但这应该无关紧要。

【讨论】:

  • 所以这似乎是我的本地设置。你的docker run 命令对我也不起作用,我无法在任何容器上运行 ping,因为它没有安装(就像 curl、wget 等没有安装一样)。但是一个过去可以正常工作的 Dockerfile 也不再工作了,它试图运行npm install。想知道在哪里看...
【解决方案2】:

解决了!似乎我设置了一些与 iptables 冲突的 nft 规则。只需一个简单的命令(如刷新 nft 规则集)即可解决问题:

sudo nft flush ruleset

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2019-10-05
    • 2021-12-09
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多