如何解决来自不安全注册表的 Dockerfile
有没有办法从使用 Gitlab 中托管的本地不安全注册表中的基本映像的 Dockerfile 构建 Docker 映像。例如,如果我的 Dockerfile 是:
FROM insecure.registry.local:/mygroup/myproject/image:latest
运行 docker build .
时出现以下错误:
failed to solve with frontend dockerfile.v0: failed to create LLB definition:.... http: server gave HTTP response to HTTPS client
当我与我们的注册表交互并收到类似类型的 http/https 错误时,我会更改 docker 守护程序配置文件以包含:
...
"insecure-registries" : ["insecure.registry.local"]
...
并且在执行会触发它的特定 docker 命令时一切都会正常工作。我能够成功运行 docker login insecure.registry.local
。 Dockerfile 本身是否有办法通过 docker build
命令或其他替代方法使其在 FROM
语句中从不安全的注册表中成功拉取映像?
解决方法
不幸的是,关于实际错误的信息并不多。
因此,以下几点可能可以解决您所描述的问题:
- 确保您的文件名为
Dockerfile
(只有D
应该大写) - 更改后重新加载并重启 docker 守护进程 (
sudo systemctl daemon-reload && sudo systemctl restart docker
) - 不要使用 docker buildkit (
export DOCKER_BUILDKIT=0 && export COMPOSE_DOCKER_CLI_BUILD=0 && docker build .
根据您的版本,您可能需要在不安全的注册表定义中包含该方案。较新版本的 buildkit 应该没有这个问题,因此升级也可能有所帮助。
...
"insecure-registries" : [
"insecure.registry.local","http://insecure.registry.local"
]
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。