如何使用DIND映像将不安全的注册表作为args在管道中传递



有人能告诉我如何在使用DIND映像作为运行时容器时将不安全注册表作为参数传递吗。请找到下面的示例脚本,我一直在使用它作为docker运行时代理。''

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'                                           

}
}
steps{                            
script{  

sh 'docker version'  
}
}
}
}
}

''

Docker版本运行良好,但我的动机是在运行时设置不安全的注册表,如下所示,这样我就可以成功地使用Docker登录和Docker推送命令。

{
"insecure-registries": [
"ec2-52-39-183-6.us-west-2.compute.amazonaws.com:8123"
]
}

我想使上述条件在运行时起作用。有人能建议一下如何用DIND来实现这一点吗?

我自己为查询找到了一个解决方案。以下是解决方案:

sh 'docker exec --tty $(docker ps -ql) sh -c "mkdir -p /etc/docker"' 
sh 'docker exec --tty $(docker ps -ql) sh -c "mkdir -p /root/.docker"'
sh '''
docker exec --tty $(docker ps -ql) sh -c "cat <<EOF > /etc/docker/daemon.json
{
"insecure-registries": [
"ec2-52-36-87-109.us-west-2.compute.amazonaws.com:8123"
]
}"
'''

但唯一的问题是,上述用于docker存储库连接器的端口8123没有打开,因此出现以下错误。

来自守护程序的错误响应

有没有办法打开docker容器中的端口来实现这一点?

最新更新