【问题标题】:Skaffold dev failsSkaffold 开发失败
【发布时间】:2021-04-09 15:20:43
【问题描述】:

运行 skaffold dev 后出现此错误。

Step 1/6 : FROM node:current-alpine3.11
exiting dev mode because first build failed: unable to stream build output: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.49.1:53: read udp 192.168.49.2:35889->192.168.49.1:53: i/o timeout. Please fix the Dockerfile and try again..

这里是 skaffold.yml

apiVersion: skaffold/v2beta11
kind: Config
metadata:
  name: *****
build:
  artifacts:
    - image: 127.0.0.1:32000/auth
      context: auth
      docker:
        dockerfile: Dockerfile
deploy:
  kubectl:
    manifests:
      - infra/k8s/auth-depl.yaml
  local:
    push: false
  artifacts:
    - image: 127.0.0.1:32000/auth
      context: auth
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
          - src: "src/**/*.ts"
            dest: .

我已经尝试了我在网上看到的所有可能的解决方案,包括添加 8.8.8.8 作为 DNS,但错误仍然存​​在。我正在使用 Linux 并运行 ubuntu,我也在本地使用 Minikube。请帮忙。

【问题讨论】:

  • 你可以试试 node:current-buster 看看你是否得到同样的错误?
  • 我得到与 node:current-buster 相同的错误
  • 这看起来更像是一个 Dockerfile 问题而不是 Skaffold 本身,你能用那个 Dockerfile 构建一个镜像吗?
  • 是的,我可以使用 Dockerfile 构建映像
  • 您是否尝试重新启动 docker daemon ?

标签: docker ubuntu kubernetes minikube skaffold


【解决方案1】:

这是一个社区 Wiki 答案,发布是为了提高可见性,因此请随时编辑它并添加您认为重要的任何其他详细信息。

在这种情况下:

minikube delete && minikube start

解决了问题,但您可以从重新启动 docker daemon 开始。由于这是 Minikube 集群,并且 Skaffold 用于构建 Minikube 的 Docker 守护进程,正如 Brian de Alwis 在他的评论中所建议的那样,您可以从:

minikube stop && minikube start

minikube ssh
su
systemctl restart docker

我搜索了类似的错误,在很多情况下,例如herein this thread,将您的 DNS 设置为像 8.8.8.8 这样的可靠名称也可能会有所帮助:

sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf

如果您使用 Minikube,您应该首先:

minikube ssh

su ### to become root

然后运行:

echo "nameserver 8.8.8.8" >> /etc/resolv.conf

以下错误信息:

Please fix the Dockerfile and try again

在类似的情况下可能会有些误导,因为Dockerfile 可能完全没问题,但我们可以在其他部分阅读:

lookup registry-1.docker.io on 192.168.49.1:53: read udp 192.168.49.2:35889->192.168.49.1:53: i/o timeout.

这肯定与 DNS 查找失败有关。这在here 中被很好地描述为众所周知的问题。

获取 i/o 超时

Get https://index.docker.io/v1/repositories//images: 拨号 tcp:lookup on :53: read udp:53: i/o timeout

说明

主机上配置的 DNS 解析器无法解析注册表的 主机名。

GitHub 链接

不适用

解决方法

重试该操作,或者如果错误仍然存​​在,请使用另一个 DNS 解析器。您可以通过更新您的 /etc/resolv.conf 文件来做到这一点 使用这些或其他 DNS 服务器:

nameserver 8.8.8.8 nameserver 8.8.4.4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多