Ubuntu Docker私有注册表

Ubuntu Docker私有注册表,ubuntu,docker,Ubuntu,Docker,在虚拟服务器Ubuntu14.04上,我安装了docker,并尝试将一个映像推送到本地注册表。 我遵循了,但当我尝试推送图像时,我有以下输出: 错误:无效的注册表终结点:Get:x509:证书已过期或尚未生效。如果此专用注册表仅支持具有未知CA证书的HTTP或HTTPS,请将--不安全注册表xx.xx.xx.xx添加到守护进程的参数中。对于HTTPS,如果您可以访问注册表的CA证书,则无需使用该标志;只需将CA证书放在/etc/docker/certs.d/xx.xx.xx/CA.crt即可 我

在虚拟服务器Ubuntu14.04上,我安装了docker,并尝试将一个映像推送到本地注册表。 我遵循了,但当我尝试推送图像时,我有以下输出:

错误:无效的注册表终结点:Get:x509:证书已过期或尚未生效。如果此专用注册表仅支持具有未知CA证书的HTTP或HTTPS,请将
--不安全注册表xx.xx.xx.xx
添加到守护进程的参数中。对于HTTPS,如果您可以访问注册表的CA证书,则无需使用该标志;只需将CA证书放在/etc/docker/certs.d/xx.xx.xx/CA.crt即可

我尝试在
/etc/default/docker
文件中添加
--不安全的注册表xx.xx.xx.xx
,然后重新启动docker服务。 Docker无法启动,消息为
/proc/self/fd/9:17:/etc/default/Docker:--未找到不安全的注册表


PS:我在docker容器中运行我的注册表

直接在主机上设置docker注册表是非常令人沮丧的。 设置本地docker存储库的最简单方法是使用docker注册表docker映像。 简单执行

docker run -p 5000:5000 -d registry
docker应该下载docker的官方注册图像。 之后,您可以附加到容器并自定义设置。 资料来源:
我在Ubuntu 12.04和Docker 1.4.1上也遇到了同样的问题。以下是我的解决方案:

$ sudo docker push "[host:ip:v6:addr:ess:is:here]:5000/myImage"
FATA[0002] Error: Invalid registry endpoint https://[host:ip:v6:addr:ess:is:here]:5000/v1/: Get https://[host:ip:v6:addr:ess:is:here]:5000/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry [host:ip:v6:addr:ess:is:here]: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/[host:ip:v6:addr:ess:is:here]:5000/ca.crt 
所以,我有一个错误

$ ps axwww | grep /usr/bin/docker
14655 ?        Ssl    2:06 /usr/bin/docker -d
14869 pts/0    S+     0:00 grep /usr/bin/docker
请注意,/usr/bin/docker没有额外的参数

$ echo 'DOCKER_OPTS="--insecure-registry [host:ip:v6:addr:ess:is:here]:5000"' | sudo tee -a /etc/default/docker
DOCKER_OPTS="--insecure-registry [host:ip:v6:addr:ess:is:here]:5000"
$ sudo service docker restart
docker stop/waiting
docker start/running, process 15615
让我们检查是否出现了参数:

$ ps axwww | grep /usr/bin/docker
15615 ?        Ssl    0:00 /usr/bin/docker -d --insecure-registry [host:ip:v6:addr:ess:is:here]:5000
15663 pts/0    S+     0:00 grep /usr/bin/docker
是的,有。再尝试一次:

$ sudo docker push "[host:ip:v6:addr:ess:is:here]:5000/myImage"
The push refers to a repository [[host:ip:v6:addr:ess:is:here]:5000/myImage] (len: 1)
Sending image list
Pushing repository [host:ip:v6:addr:ess:is:here]:5000/myImage (1 tags)
511136ea3c5a: Image successfully pushed 
27d47432a69b: Pushing [================================================>  ] 189.8 MB/197.2 MB 0

只需运行这个
docker run-p5000:5000-d注册表
就会让您在使用https时遇到麻烦

我发现本教程很有帮助:

它基本上使用nginx设置一个反向代理来访问私有注册表。我有一个带有注册表的流浪者盒子,还有一个不同的流浪者盒子从注册表中提取东西。有效:)

希望这对主持人有所帮助

  1- install docker machin
      curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && \
      sudo install /tmp/docker-machine /usr/local/bin/docker-machine
  2- Remove any proxy entry in /etc/systemd/system/docker.....
  3- Edit the daemon.json file, whose default location is /etc/docker/daemon.json
      {
      "insecure-registries" : ["myregistrydomain.com:5000"]
      }
  4- Generate crt: 
      $mkdir -p certs
      $openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
      Be sure to use the same name myregistrydomain.com as a CN.
      Copy the domain.crt file to /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt on every Docker host. You do not need to restart Docker.

  5- pull registry image from docker hub 
      docker run -p 5000:5000 --name myregistry registry
在客户机中

  1- Remove any proxy entry in /etc/systemd/system/docker.....
  2- Edit the daemon.json file, whose default location is /etc/docker/daemon.json
      {
      "insecure-registries" : ["myregistrydomain.com:5000"]
      }     

愚蠢的问题:您是否用注册表的主机名/ip地址替换了xx.xx.xx.xx?使用st0ne的
--不安全注册表=xx.xx.xx.xx
(不要忘记“=”):我的私有注册表repo.my.lan@mbarthelmy的fqdn不起作用,如果我用docker-d启动docker守护程序--不安全注册表repo.coro.ced.它起作用!我在nel行中键入--unsecure registry xx.xx.xx而不是使用DOCKER_OPTS=“--unsecure registry xx.xx.xx.xx”您还可以将CA证书添加到受信任的证书中感谢解释如何使用ps命令验证DOCKER_OPTS是否实际占据了位置。我不太确定您是否必须添加“unsecure registries”在主机和客户端上。