有人能告诉我如何在使用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容器中的端口来实现这一点?