AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1120396
Accepted
best_of_man
best_of_man
Asked: 2023-01-17 15:40:22 +0800 CST2023-01-17 15:40:22 +0800 CST 2023-01-17 15:40:22 +0800 CST

为什么“Skaffold”为每个容器创建 2 个不同的图像?

  • 772

我有一个这样的 Skaffold 文件:


apiVersion: skaffold/v4beta1
kind: Config
build:
  artifacts:
  - image: app/auth
    context: auth
    sync:
      manual:
      - src: src/**/*.ts
        dest: .
    docker:
      dockerfile: Dockerfile

和deploymant如下文件:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
        - name: auth
          image: app/auth
          env:
            - name: MONGO_URI
              value: 'mongodb://auth-mongo-srv:27017/auth'
            - name: JWT_KEY
              valueFrom:
                secretKeyRef:
                  name: jwt-secret
                  key: JWT_KEY

---
apiVersion: v1
kind: Service
metadata:
  name: auth-srv
spec:
  selector:
    app: auth
  ports:
    - name: auth
      protocol: TCP
      port: 3000
      targetPort: 3000

像Dockerfile下面这样:


FROM node:alpine

WORKDIR /app
COPY package.json .
RUN npm install --only=prod
COPY . .

CMD ["npm", "start"]


但是在运行之后skaffold dev我看到了这样一个 docker 镜像列表:

REPOSITORY                       TAG                                                                IMAGE ID       CREATED             SIZE
app/auth               429eadf4af2ad66af9f364eb3cfe8926e05276c4f579fe39c5112e3201b1e4ac   429eadf4af2a   15 minutes ago      345MB
app/auth               latest                                                             429eadf4af2a   15 minutes ago      345MB

每个容器有 2 个不同的图像是否正常?

docker
  • 1 1 个回答
  • 38 Views

1 个回答

  • Voted
  1. Best Answer
    Veera Nagireddy
    2023-01-18T02:21:00+08:002023-01-18T02:21:00+08:00
    After referring to a lot of documents it seems they're OK and no need to fix them.
    

    运行skaffold build命令会触发图像构建,这会导致image with two tags;

    一个带有最新的 git 标签或 git commit(例如 my-app:ae7926d),并且由于图像没有被推送到容器注册表,一个标签使用图像的 64 个字符 ID。

    Skaffold 在图像不变性方面很重要,并且是latter tag对本地缓存中图像的内容可寻址引用。如果它已被推送到注册表,则不可变引用将改为图像的摘要。

    这确保我们只使用 Skaffold 构建的图像,并且not a nefarious image masquerading as one and the same.

    除了为我们之前提到的构建方法(即 Docker、Jib 等)提供灵活性外,Skaffold 还可以适应不同的位置来执行图像构建。它们可以在本地、Kubernetes 集群内(使用 Kaniko)或使用(不出所料)Google Cloud Build 远程执行。

    请阅读使用Skaffold 为 Kubernetes 开发(构建图像)以获取更多信息。

    另请参阅类似的SO,它清楚地解释了Why does Skaffold maintains two tags when building to the local docker daemon?

    标签很便宜:它们就像符号链接,指向图像标识符。

    Skaffold 不能只使用计算图像标签,因为许多标签约定不会生成唯一标签,并且标签可以被其他开发人员覆盖并指向不同的图像。一组开发人员或并行测试将图像推送到同一个图像存储库并遇到标签冲突的情况并不少见。

    • 2

相关问题

  • 当你让一个进程监听 0.0.0.0 而不是 127.0.0.1 时,为什么 docker 工作仍然很困惑

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve