如何在本地机器上查找 docker 镜像

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 图像。

Adi*_*iii 8

为此,您需要在本地计算机或运行 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/


yam*_*enk 0

事实证明,这已经是一个已知问题:https ://issues.jenkins-ci.org/browse/JENKINS-47106

docker 镜像始终被拉入代理定义内。与此同时,唯一的解决方案是将镜像推送到 Dockerhub 或私有注册中心,以便成功拉取镜像。