是否有一种方法可以从Dockerfile中构建docker映像,该Dockerfile使用来自Gitlab托管的本地不安全注册表的基本映像。例如,如果我的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
语句中成功地从不安全的注册表中提取图像?
根据您的版本,您可能需要在不安全的注册表定义中包含该方案。较新版本的buildkit不应该有这个问题,所以升级也可能有帮助。
...
"insecure-registries" : [
"insecure.registry.local",
"http://insecure.registry.local"
]
...
遗憾的是,没有太多关于实际错误的信息。
所以这里有一些事情可以解决你所描述的问题:
- 确保你的文件被称为
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 .
)