Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从子网和外部世界公开访问Docker注册表_Docker_Docker Registry - Fatal编程技术网

如何从子网和外部世界公开访问Docker注册表

如何从子网和外部世界公开访问Docker注册表,docker,docker-registry,Docker,Docker Registry,我刚刚通过以下方式运行docker注册表: $ docker run -d --name registry --restart always -p 5961:5000 registry:2.7.1 现在,我可以通过以下方式来推进: $ docker tag ubuntu:v2 localhost:5961/ubuntu:v2 $ docker push localhost:5961/ubuntu:v2 但不是从外面。例如,我无法通过执行以下命令从同一网络上的另一台计算机推送到它

我刚刚通过以下方式运行docker注册表:

$ docker run -d   --name registry  --restart always   -p 5961:5000   registry:2.7.1
现在,我可以通过以下方式来推进:

$ docker tag ubuntu:v2 localhost:5961/ubuntu:v2
$ docker push localhost:5961/ubuntu:v2
但不是从外面。例如,我无法通过执行以下命令从同一网络上的另一台计算机推送到它:

$ docker tag ubuntu:v2 192.168.1.122:5961/ubuntu:v2
$ docker push 192.168.1.122:5961/ubuntu:v2
错误是:

The push refers to repository [192.168.1.122:5961/ubuntu]
Get https://192.168.1.122:5961/v2/: http: server gave HTTP response to HTTPS client
为什么?? 此外,我不知道如何从外部世界获取此图像(192.168.1.122:5961/ubuntu:v2)。例如:

$ docker pull <public-ip>:5961/ubuntu:v2
$docker pull:5961/ubuntu:v2

请注意,我可以将机器的端口192.168.1.122转发到与本地网络有关的

1的相同端口:

您的docker注册表不安全,正在使用HTTP,而不是HTTPS。因此,您需要通过如下方式更新
/etc/docker/daemon.json
文件,为客户端守护程序定义一个
不安全的注册表

{
  "insecure-registries" : ["192.168.1.122:5961"]
}
见:

2关于从外部世界提取图像:

它应该按照您描述的方式工作
docker pull:5961/ubuntu:v2
(只要所有客户端都将注册表定义为不安全)


但是请不要使用一个对外开放的不安全的注册表,除非你希望世界上的每个人都能获取你的图像,否则请在你的注册表服务前添加一些身份验证机制

如果你想降级我的问题,请添加一条关于原因的评论@赛义德:你是说码头工人标签不是个好办法吗?!我应该用docker创建名为“192.168.1.122:5961/ubuntu:v2”的映像吗?谢谢你在不安全的注册表上给出的好答案。如果我将标记为“192.168.1.122:5961/ubuntu:v2”的图像推送到路由器设置中的端口转发“192.168.1.122:5961”之后的“docker pull:5961/ubuntu:5961”,我可以从外部世界将其拉到:5961吗?如果转发正确,这一行
docker pull:5961/ubuntu:v2
应该可以工作。并且docker客户端拉取映像的配置正确如何使注册表安全?我必须只使用:docker trusted registry?您可以使用注册表配置各种安全机制。请参阅文档:。最低要求是配置
tls
,这样注册表将使用HTTPS,您也可以使用客户端证书或其他一些身份验证方法,但所有这些都需要配置docker客户端。我的问题不好吗?如果没有,请投赞成票好吗?此外,我将测试你的答案,然后奖励我的奖金给你的答案。。。