簡體   English   中英

登錄並將 docker 映像推送到運行在 k8s 上的 jenkins 管道的(不安全的)工件 docker 存儲庫

[英]Login and Push docker image to (insecure) artifactory docker repo from jenkins pipeline running on k8s

What i want to achieve: able to push docker image to (insecure) artifactory docker repo from a jenkins pipeline which is running on kubernetes (jnlp).

我正在嘗試什么:我在 jenkins(在 k8s 上運行)上使用 kubernetes 插件,該插件正在運行 docker:dind 容器作為從代理。 當我推送它時,它會因證書錯誤(x509)而失敗,因為它是一個不安全的人工倉庫。 因此,要推送到不安全的工件,我想更新 docker 客戶端的 daemon.json 中的 --insecure-registries。

但不幸的是,即使在更新 docker:dind 中的 daemon.json 之后,它也沒有生效,因為使用的 docker 客戶端來自運行 k8s 的底層節點。 (在我的情況下是 minikube)和 docker:dind 用作守護進程

所以我無法在 docker 客戶端中添加我的人工倉庫 --insecure-registries ,除非我在 k8s 集群 Z05B6053C41A2130AFD6FC3B158BDA4EZ 客戶端(minikube 客戶端)上更新 daemon.json

What i want to do: Hence I want to change docker client from k8s node(minikube) to another docker slave running inside the kubernetes plugin where i can configure daemon.json. 你能幫我做嗎? 或者請提出一個更好的方法來解決這個問題。

如果您將/var/run/docker.sock掛載到它,則可以讓 jnlp-slave 使用主機的 docker 守護程序,而不是使用 docker-in-docker。 然后您可以編輯主機的/etc/docker/daemon.json以添加不安全的注冊表。

假設您在管道中定義了 jnlp-slave 模板,您可以執行以下操作:

pipeline {
    agent {
        kubernetes {
            yaml """
apiVersion: v1
kind: Pod
metadata:
  label:
    jenkins: slave
spec:
  containers:
  - name: jnlp
    image: registry/jnlp-slave:latest
    volumeMounts:
      - name: docker
        mountPath: /var/run/docker.sock
  volumes:
  - name: docker
    hostPath: { path: /var/run/docker.sock }
"""```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM