繁体   English   中英

Docker 本地注册表尝试将图像推送到 docker.io

[英]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.9localhost

如果可以访问,您可以在浏览器中验证注册表访问权限,您将能够推送。

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 注册表初始化

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 镜像拉取并推送到注册表

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM