cle*_*ase 3 jenkins-plugins docker dockerfile docker-machine jenkins-pipeline
我的本地机器上有一个 docker 镜像。当我尝试使用以下 Jenkins 文件运行图像时。
agent {
docker {
image 'gcc/sample:latest'
args "-v /etc/passwd:/etc/passwd:ro
}
}
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误。
+ docker pull gcc/sample:latest
Pulling repository docker.io/gcc/sample
Error: image gcc/sample:latest not found
script returned exit code 1
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在 Jenkins 文件中说在我的本地机器上查找 docker 图像而不是 docker.io 来查找 docker 图像。
为此,您需要在本地计算机或运行 Jenkins 的 Jenkins 服务器上安装 docker 注册表。只需运行 docker 注册表容器
docker run -d -p 5000:5000 --restart always --name registry registry:2
Run Code Online (Sandbox Code Playgroud)
首先标记您的图像
docker tag alpine localhost:5000/gcc/sample:latest
Run Code Online (Sandbox Code Playgroud)
将该映像推送到本地 docker 注册表
docker push localhost:5000/gcc/sample:latest
Run Code Online (Sandbox Code Playgroud)
现在,如果您想在 jenkins 中拉取 docker 镜像,那么在我们从 docker 注册表中拉取一些东西时,请提供带有 dns 的拉取路径,它包含带有 dns 的全名。
docker pull localhost:5000/gcc/sample:latest
Run Code Online (Sandbox Code Playgroud)
注册表是一个存储和内容交付系统,保存命名的 Docker 镜像,可用于不同的标记版本。
docker pull ubuntu 指示 docker 从官方 Docker Hub 拉取一个名为 ubuntu 的镜像。这只是较长 docker pull docker.io/library/ubuntu 命令的快捷方式
docker pull myregistrydomain:port/foo/bar 指示 docker 联系位于 myregistrydomain:port 的注册表以查找映像 foo/bar
运行您自己的 Registry 是与您的 CI/CD 系统集成和补充的绝佳解决方案。
https://docs.docker.com/registry/introduction/
事实证明,这已经是一个已知问题:https ://issues.jenkins-ci.org/browse/JENKINS-47106
docker 镜像始终被拉入代理定义内。与此同时,唯一的解决方案是将镜像推送到 Dockerhub 或私有注册中心,以便成功拉取镜像。
归档时间: |
|
查看次数: |
5800 次 |
最近记录: |