[英]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.