You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins流水线中使用DIND镜像传递不安全注册表参数

在Jenkins DIND容器中配置不安全注册表的几种方法

我来帮你解决这个问题,其实在docker:dind容器里设置不安全注册表有几种很直接的方式,下面我一个个给你说明:

方法1:直接通过DIND启动参数传递(最推荐)

docker:dind镜像本身支持直接在启动时通过--insecure-registry参数指定不安全注册表,你只需要在Jenkins pipeline的agent args里加上这个参数就行,不需要额外的配置文件。

修改后的pipeline代码如下:

pipeline {
    agent {label 'jenkins-docker-slave'}
    stages{
        stage('maven version'){
            agent {docker { image 'maven:latest'}}
            steps{
                script{
                    sh "mvn --version"
                }
            }
        }
        stage('docker build'){
            agent { 
                docker { 
                    image 'docker:dind' 
                    args '-v /var/run/docker.sock:/var/run/docker.sock --insecure-registry ec2-52-39-183-6.us-west-2.compute.amazonaws.com:8123' 
                } 
            }
            steps{
                script{
                    sh 'docker version'
                    // 现在你可以正常执行docker login和push命令了
                    sh 'docker login ec2-52-39-183-6.us-west-2.compute.amazonaws.com:8123 -u your-username -p your-password'
                    sh 'docker push your-image:tag'
                }
            }
        }
    }
}

这个方法的好处是不需要额外准备配置文件,所有配置都在pipeline里完成,非常直观且可靠。

方法2:挂载自定义的daemon.json配置文件

如果你需要更复杂的Docker daemon配置(比如多个不安全注册表、镜像加速等),可以提前在Jenkins slave节点上创建好daemon.json文件,然后挂载到DIND容器的/etc/docker/daemon.json路径。

  1. 先在你的Jenkins slave节点上创建daemon.json文件,内容如下:
{ "insecure-registries": [ "ec2-52-39-183-6.us-west-2.compute.amazonaws.com:8123" ] }

假设文件路径是/opt/docker-config/daemon.json。

  1. 修改pipeline里的agent args,添加挂载命令:
agent { 
    docker { 
        image 'docker:dind' 
        args '-v /var/run/docker.sock:/var/run/docker.sock -v /opt/docker-config/daemon.json:/etc/docker/daemon.json' 
    } 
}

DIND容器启动时会自动读取这个配置文件,直接生效不安全注册表设置。

方法3:在容器内动态配置(不推荐)

如果上面两种方法都不适用,你也可以在DIND容器启动后,手动创建daemon.json并重启Docker服务,但这种方法需要容器内有足够的权限,而且重启服务可能会有延迟,稳定性不如前两种:

stage('docker build'){
    agent { docker { image 'docker:dind' args '-v /var/run/docker.sock:/var/run/docker.sock' } }
    steps{
        script{
            // 创建daemon.json配置文件
            sh 'echo \'{ "insecure-registries": [ "ec2-52-39-183-6.us-west-2.compute.amazonaws.com:8123" ] }\' > /etc/docker/daemon.json'
            // 重启Docker服务使配置生效
            sh 'service docker restart'
            // 等待服务重启完成
            sh 'sleep 5'
            // 执行后续Docker命令
            sh 'docker version'
            sh 'docker login ...'
        }
    }
}

内容的提问来源于stack exchange,提问作者Arvindgpt88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 16:22:56