如何在构建时让docker从私有存储库中取出

Jul*_*rra 15 docker dockerfile docker-registry docker-trusted-registry

有没有办法在私有注册表中提取图像docker build而不是docker hub?

我部署了一个私有注册表,我希望能够避免ip:port在Dockerfile的FROM指令中命名其特定的.我期待一个docker build选项或docker环境变量来更改默认注册表.

cpu*_*y83 16

映像名称应包含注册表主机的FQDN.所以,如果你想要,FROM <some private image>你必须指定它FROM registry_host:5000/foo/bar

将来这不是一个要求,但不幸的是现在它是.


Mat*_*t L 14

我在 2019 年遇到了同样的问题。我使用参数 (ARG) 解决了这个问题。
https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
参数允许您设置可在 FROM 行中使用的可选参数(使用默认值)。

Dockerfile-项目-开发

ARG REPO_LOCATION=privaterepo.company.net/
ARG BASE_VERSION=latest
FROM ${REPO_LOCATION}project/base:${BASE_VERSION}
...
Run Code Online (Sandbox Code Playgroud)

对于我的用例,我通常想从私有存储库中提取,但如果我正在处理 Dockerfiles,我可能希望能够从我自己机器上的图像构建,而不必修改我的 Dockerfile 中的 FROM 行. 要告诉 Docker 在构建时在我的本地机器上搜索图像,我会这样做:

docker build -t project/dev:latest -f ./Dockerfile-project-dev --build-arg REPO_LOCATION='' .
Run Code Online (Sandbox Code Playgroud)


lar*_*sks 8

码头工人通常希望确保如果你运行,docker pull foo/bar你将获得相同的东西(即foo/bar来自Docker Hub 的图像),无论你的本地环境如何.

这意味着没有可用的选项让Docker在没有显式主机名/端口的情况下使用其他任何东西.

  • 我不认为它是明确记录的,但它已经出现在问题跟踪器[这里](https://github.com/docker/docker/issues/7203)和各种邮件列表中. (2认同)