【问题标题】:Skaffold Dev Not able to push image because tag does not existSkaffold Dev 无法推送图像,因为标签不存在
【发布时间】:2023-02-06 22:27:20
【问题描述】:

我正在使用 Next.js、Kubernetes、ingress-ngninx 和 skaffold。我在我的下一个项目中有一个 Docker 文件,并且我在 Dockerhub 中有一个 repo。当我尝试运行 skaffold dev 时,我一直看到这个错误:

build [st3/tickethub-client] failed: could not push image "st3/tickethub-client:36d456b": tag does not exist: st3/tickethub-client:36d456b

我尝试使用latest 标签和36d456b 标签手动构建图像:docker build -t st3/tickethub-client:latest/36d456b。然后我将两者都成功推送到 dockerhub。 Skaffold 开发仍然失败。然后我在推送后拉出该图像,skaffold dev 失败并出现相同的错误。然后我做了一个 docker prune -a 将 docker 重置为开箱即用的设置,但在重建/推送到 docker hub 后它仍然失败。如何解决这个问题?当我在构建中指定 :latest 时,为什么它会创建一个关闭标签?

码头工人版本 Docker version 23.0.0, build e92dd87 脚手架版本v2.0.3

客户端depl.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tickethub-client-depl
spec:
  replicas: 1
  # Add selector so depl can find which pods to create
  selector:
    matchLabels:
      app: tickethub-client
  # Pod creation details
  template:
    metadata:
      labels:
        app: tickethub-client
    spec:
      containers:
        - name: tickethub-client
          image: st3/tickethub-client:latest
---
# K8's complimentary tickethub-client service
apiVersion: v1
kind: Service
metadata:
  name: tickethub-client-srv
spec:
  selector:
    # Find matching pods by selector
    app: tickethub-client
  ports:
    - name: tickethub-client
      protocol: TCP
      port: 3000
      targetPort: 3000

ingress-srv.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: tickethub.io
      http:
        paths:
          - path: /?(.*) 
            pathType: Prefix
            backend:
              service:
                name: tickethub-client-srv
                port:
                  number: 3000

文件

# Grab base image
FROM node:alpine

# Set up working directory
WORKDIR /app

# Copy into workdir
COPY package.json .

# Cmd to run
RUN npm install

#Copy everything else from src dir
COPY . .

# Default cmd to run when container is created from this image
CMD ["npm", "run", "dev"]

docker images的输出

docker images
REPOSITORY                                 TAG       IMAGE ID       CREATED          SIZE
st3/tickethub-client                 36d456b   d224d808efc7   12 minutes ago   533MB
st3/tickethub-client                 74a97c6   d224d808efc7   12 minutes ago   533MB
st3/tickethub-client                 latest    d224d808efc7   12 minutes ago   533MB
st3/auth                             latest    67b5330b204b   15 minutes ago   371MB
registry.k8s.io/ingress-nginx/controller   <none>    f2e1146a6d96   2 months ago     269MB
k8s.gcr.io/kube-apiserver                  v1.25.2   97801f839490   4 months ago     128MB
k8s.gcr.io/kube-scheduler                  v1.25.2   ca0ea1ee3cfd   4 months ago     50.6MB
k8s.gcr.io/kube-controller-manager         v1.25.2   dbfceb93c69b   4 months ago     117MB
k8s.gcr.io/kube-proxy                      v1.25.2   1c7d8c51823b   4 months ago     61.7MB
registry.k8s.io/pause                      3.8       4873874c08ef   7 months ago     711kB
k8s.gcr.io/etcd                            3.5.4-0   a8a176a5d5d6   8 months ago     300MB
k8s.gcr.io/coredns                         v1.9.3    5185b96f0bec   8 months ago     48.8MB
docker/desktop-vpnkit-controller           v2.0      8c2c38aa676e   21 months ago    21MB
docker/desktop-storage-provisioner         v2.0      99f89471f470   21 months ago    41.9MB

在这一点上我没有想法。

【问题讨论】:

    标签: docker kubernetes skaffold


    【解决方案1】:

    我终于能够让这个工作:

    运行 docker system prune -a --volumes 以删除本地 docker 的所有内容,然后重新构建图像并推送到 dockerhub 似乎有效。不是 100% 这对每个人来说都是一个包罗万象的解决方案,因为它从本地删除了所有东西(我不介意,因为无论如何这是开发工作)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-01
      • 2022-12-17
      • 2023-03-29
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      相关资源
      最近更新 更多