[英]Docker local registry tries to push images to docker.io
我创建了一个本地 docker 注册表。 我遵循的步骤。 创建证书文件。
mkdir -p /etc/docker/certs.d/123.456.78.9:5000
cp domain.crt /etc/docker/certs.d/123.456.78.9:5000/ca.crt
cp domain.crt /usr/local/share/ca-certificates/ca.crt
update-ca-certificates
已安装 Docker 注册表,如官方指南中所述
docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2
拉推 Docker 镜像:
docker pull ubuntu:16.04
docker tag ubuntu:16.04 mydocker_registry/my_ubuntu
docker push mydocker_registry/my-ubuntu
我的图像推送尝试访问docker.io
,所以错误很明显。
The push refers to repository [docker.io/mydocker_registry/my_ubuntu]
03901b4a2ea8: Preparing
denied: requested access to the resource is denied
我的/etc/hosts
文件看起来像这样
123.456.78.9 mydocker_registry
在这里,我觉得我错过了一小步。 我想不通。 提前致谢。
尝试将您的注册表添加为不安全的注册表。
如果您使用的是 Linux,请在/etc/docker
daemon.json
下编辑您的 daemon.json
添加
{
"insecure-registries" : ["registry-ip:registry-port"]
}
并在终端中运行
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
you need to add you your registry url in the tag, if the local registry URL is not part of your Docker image tag, by default it will push to official docker registry.
这就是您在推送日志中看到的原因
The push refers to a repository [docker.io/mydocker_registry/my_ubuntu]
所以你添加的所有内容都是为了添加 docker 注册表的完整路径。
docker tag ubuntu:16.04 123.456.78.9:5000/mydocker_registry/my_ubuntu
docker push 123.456.78.9:5000/mydocker_registry/my_ubuntu
这里的123.456.78.9
指的是您的本地注册表。 如果是本地主机,那么只需123.456.78.9
与localhost
如果可以访问,您可以在浏览器中验证注册表访问权限,您将能够推送。
https://myregistry.com/v2/_catalog
or
http://localhost:5000/v2/_catalog
好的,经过几天的阅读和尝试,由于 /r/ docker redditters提供的帮助,我已经解决了我的问题 :-)
请注意,这仅适用于您的本地域
这里我的域是registry.myregistry.com
。
openssl req -newkey rsa:4096 -nodes -sha256 -keyout registry.myregistry.com.key -x509 -days 365 -out registry.myregistry.com.crt
mkdir -p /etc/docker/certs.d/registry.myregistry.com:443
cp registry.myregistry.com.crt /etc/docker/certs.d/registry.myregistry.com:443/ca.crt
cp registry.myregistry.com /usr/local/share/ca-certificates/ca.crt
update-ca-certificates
docker run -d -p 443:443 --restart=always --name registry -v $PWD/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.myregistry.com.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.myregistry.com.key registry:2
docker pull alpine:latest
docker tag alpine:latest registry.myregistry.com:443/myalpine
docker push registry.myregistry.com:443/myalpine
没有错误,推送成功。
要做的是,接受来自同一网络中其他用户的拉取请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.