如何远程访问私有docker-registry?

Ofe*_*saf 81 remote-access docker docker-registry

我正在尝试使用以下图像设置私有docker注册表:https: //github.com/docker/docker-registry

只需运行:
docker run -p 5000:5000 registry

我只能从localhost拉/从这个存储库推送/但是如果我尝试从另一台机器上访问它(使用同一局域网上的私有地址),它会失败并显示错误消息:

*2014/11/03 09:49:04 Error: Invalid registry endpoint https ://10.0.0.26:5000/v1/': 
Get https:// 10.0.0.26:5000/v1/_ping: Forbidden. If this private 
registry supports only HTTP or HTTPS with an unknown CA certificate,
please add `--insecure-registry 10.0.0.26:5000` to the daemon's 
arguments. In the case of HTTPS, if you have access to the registry's
CA certificate, no need for the flag; simply place the CA certificate 
at /etc/docker/certs.d/10.0.0.26:5000/ca.crt*
Run Code Online (Sandbox Code Playgroud)

令我发疯的是我可以使用:curl 10.0.0.26:5000 和/或成功访问它 curl 10.0.0.26:5000/v1/search

我也不明白我应该在哪里以及如何通过--insecure-registry国旗.

Ofe*_*saf 73

好的 - 经过一天的挖掘后,我找到了解决方案.

对于1.12.1以下的码头:

事实证明,新的客户端版本拒绝使用没有SSL的私有注册表.

要解决此问题 - 应使用不安全标志启动客户端计算机上的守护程序:

只需输入:

sudo service docker stop # to stop the service
Run Code Online (Sandbox Code Playgroud)

然后

sudo docker -d --insecure-registry 10.0.0.26:5000
Run Code Online (Sandbox Code Playgroud)

(10.0.0.26用你自己的ip地址替换).

我希望docker的人能把这个选项添加到pull/push命令行......

编辑 - altenantive - 你可以DOCKER_OPTS在/ etc/default/docker中添加标志到env变量然后sudo service docker restart

再次编辑 - 看起来这个码头工人正在使用它 - 很快就会出现修复:https: //github.com/docker/docker/pull/8935

对于docker 1.12.1:

请按照以下vikas027的答案(对centos有效)

  • @ashleyaitken,我使用以下参考来帮助我解决Boot2Docker:https://github.com/boot2docker/boot2docker#insecure-registry.希望有所帮助. (3认同)
  • 如何在Mac上使用Boot2Docker完成这项工作? (2认同)

vik*_*027 28

这对CentOS 7.2Docker 1.12.1(最新的日期)有用.我的私有注册表v2正在运行192.168.1.88:5000,相应地进行更改.如果您有多个注册表,这也可以继续添加--insecure-registry IP:Port

$ sudo vim /usr/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd 
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.88:5000
$
$ sudo systemctl stop docker
$ sudo systemctl daemon-reload
$ systemctl start docker
Run Code Online (Sandbox Code Playgroud)

  • `--insecure-registry`是一种解决方法,而不是修复. (4认同)
  • 为我工作但是docker.service在Ubuntu 16.04上的`/ lib/systemd/system/docker.service`中. (2认同)

dao*_*hao 24

编辑配置文件"/ etc/default/docker"

sudo vi/etc/default/docker

在文件末尾添加行

DOCKER_OPTS ="$ DOCKER_OPTS --insecure-registry = 192.168.2.170:5000"

(用您自己的IP地址替换192.168.2.170)

并重新启动docker服务

sudo服务码头重启


Jay*_*Jay 12

好.以下是我如何使用它.如果您在docker 1.3.2或更高版本中看到此错误,请执行此操作

/etc/sysconfig/docker

other_args="--insecure-registry 10.0.0.26:5000"
Run Code Online (Sandbox Code Playgroud)

并运行

sudo service docker restart

  • `--insecure-registry`是一种解决方法,而不是修复. (2认同)

TJA*_*TJA 12

我发现以下内容非常有用,因为它讨论了如何配置Docker服务本身.https://docs.docker.com/articles/systemd/

与systemctl命令上的这篇文章一起https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units

我在基于Centos 7的容器中使用了以下一系列命令,其中注册表图像由"docker pull registry:2.1.1"获得

sudo mkdir -p /etc/systemd/system/docker.service.d
cd /etc/systemd/system/docker.service.d
sudo touch override.conf
sudo nano override.conf
Run Code Online (Sandbox Code Playgroud)

在override.conf里面添加了以下内容.

[Service]
ExecStart=
ExecStart=/usr/bin/docker -d -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --insecure-registry 10.2.3.4:5000
Run Code Online (Sandbox Code Playgroud)

注意第一个,空白,ExecStart =清除已经存在的任何内容,因此请务必添加您希望保留的/usr/lib/systemd/system/docker.service ExecStart =语句中的任何内容.

如果未指定-d(守护程序)选项,则会出现"请仅指定一个-H"错误.

发出以下一系列命令后,我可以看到我的覆盖.

sudo systemctl stop docker
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl status docker

docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           ??override.conf
   Active: active (running) since Thu 2015-09-17 13:37:34 AEST; 7s ago
     Docs: https://docs.docker.com
 Main PID: 5697 (docker)
   CGroup: /system.slice/docker.service
           ??5697 /usr/bin/docker -d -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --insecure-registry 10.2.3.4:5000
Run Code Online (Sandbox Code Playgroud)

注意:状态消息中的Loaded:和Drop-In:行提供的信息对于检查预先存在的docker守护程序发生的情况非常有用.

注意:还可以在Loaded:docker.service文件中查看EnvironmentFile =以获取更多线索.

  • `--insecure-registry`是一种解决方法,而不是修复. (2认同)

JaT*_*aTo 9

使用以下命令将{YOUR_REGISTRY}替换为您的注册表

boot2docker ssh "echo $'EXTRA_ARGS=\"--insecure-registry {YOUR_REGISTRY}\"' | sudo tee -a /var/lib/boot2docker/profile && sudo /etc/init.d/docker restart"
Run Code Online (Sandbox Code Playgroud)

  • `--insecure-registry`是一种解决方法,而不是修复. (2认同)

小智 7

编辑docker.service文件,在-d标志后添加--insecure-registry xxxx,重启docker

这是唯一对我有用的东西,DOCKER_OPTS没有任何效果

  • `--insecure-registry`是一种解决方法,而不是修复. (2认同)