将 docker 图像推送到未经授权的私有注册表时,Jenkins 管道中没有此类主机错误
No such host error in Jenkins pipeline when pushing docker image to unauthorized private registry
我试图在未配置任何身份验证的情况下将 docker 图像推送到私有注册表。以下是 jenkinsfile 阶段的样子。
在部署阶段没有 writeFile 命令,我没有得到这样的主机错误
docker push <private-vm-name>:5000/temp/prototype-be:v1
The push refers to repository [<private-vm-name>:5000/temp/prototype-be]
Get https://<private-vm-name>:5000/v2/: dial tcp: lookup <private-vm-name> on 127.0.0.11:53: no such host
使用 writeFile 命令我得到一个 AccessDenied 异常
java.nio.file.AccessDeniedException: /etc/docker
有人可以指导我如何解决这些错误以推送到私有 docker 注册表吗?
谢谢。
Jenkinsfile 阶段
stage('Building docker image') {
steps{
script {
dockerImage = docker.build registry + ":v1"
}
}
}
stage('Pushing docker image') {
steps{
script {
writeFile file:"/etc/docker/daemon.json", text: "{
"insecure-registries": [
"<private-vm-name>:5000"
]
}"
docker.withRegistry( 'http://<private-vm-name>:5000') {
dockerImage.push()
}
}
}
}
作为解决方法,我使用 --insecure-registries
标志执行了 jenkins-server dind
docker 图像。由于 jenkins 生成的 docker 容器现在知道私有 docker 注册表,因此上述 docker 推送命令有效。请注意,我还更改了 jenkins push 命令以使用服务器的 ip 地址而不是主机名,这样我就不需要编辑 /etc/hosts.
我试图在未配置任何身份验证的情况下将 docker 图像推送到私有注册表。以下是 jenkinsfile 阶段的样子。
在部署阶段没有 writeFile 命令,我没有得到这样的主机错误
docker push <private-vm-name>:5000/temp/prototype-be:v1
The push refers to repository [<private-vm-name>:5000/temp/prototype-be]
Get https://<private-vm-name>:5000/v2/: dial tcp: lookup <private-vm-name> on 127.0.0.11:53: no such host
使用 writeFile 命令我得到一个 AccessDenied 异常
java.nio.file.AccessDeniedException: /etc/docker
有人可以指导我如何解决这些错误以推送到私有 docker 注册表吗?
谢谢。
Jenkinsfile 阶段
stage('Building docker image') {
steps{
script {
dockerImage = docker.build registry + ":v1"
}
}
}
stage('Pushing docker image') {
steps{
script {
writeFile file:"/etc/docker/daemon.json", text: "{
"insecure-registries": [
"<private-vm-name>:5000"
]
}"
docker.withRegistry( 'http://<private-vm-name>:5000') {
dockerImage.push()
}
}
}
}
作为解决方法,我使用 --insecure-registries
标志执行了 jenkins-server dind
docker 图像。由于 jenkins 生成的 docker 容器现在知道私有 docker 注册表,因此上述 docker 推送命令有效。请注意,我还更改了 jenkins push 命令以使用服务器的 ip 地址而不是主机名,这样我就不需要编辑 /etc/hosts.