【问题标题】:how to create a Docker local private repository如何创建 Docker 本地私有仓库
【发布时间】:2019-07-07 04:02:21
【问题描述】:

我在我的服务器中创建了一个本地 docker 存储库。
当我尝试将图像推送到其中时,出现错误。
我需要一个 HTTPS 连接。
我如何获得一个 HTTPS我自己的 docker 注册表?

操作系统: ubuntu 16.x
Docker 版本: 18.06.1-ce,构建 e68fc7a
已经尝试过:
将以下行添加到 /etc/docker/daemon.json,

{ "insecure-registries" : ["myregistrydomain.com:5000"] }

预期:我应该能够将图像推送和拉取到我自己的包含 docker 注册表的服务器中

【问题讨论】:

  • 我使用本地注册表(开发机器)和 SSH 隧道将图像推送到远程服务器。服务器认为它正在与本地注册表通信,并且端口 5000 未暴露(在任一端)。
  • 对不起,我不明白@Chris
  • 我已经对此进行了扩展,作为下面的答案。

标签: docker ubuntu-16.04 docker-registry docker-repository


【解决方案1】:

为了避免将您的注册表暴露在更广泛的互联网上,同时仍然能够从中提取图像,您可以:

  1. 在您的开发机器上运行一个本地注册表,您可以将图像推送到该注册表
  2. 使用反向隧道 SSH 到您的服务器:

    ssh -R 5000:localhost:5000 myhost

    (监听远程机器的5000端口(@98​​7654322@)并通过隧道返回到本地机器上的localhost:5000

  3. 现在,您可以在 myhost 上使用 docker pull localhost:5000/someImage,但它实际上是通过加密隧道无缝连接回您的开发计算机上的注册表。

【讨论】:

    【解决方案2】:

    您可以拥有一个本地不安全的注册表。 为此,您需要在 /etc/docker/daemon.json 中添加一个异常,this way

    {
      "insecure-registries" : ["myregistrydomain.com:5000"]
     }
    

    同一链接显示如何使用自签名证书。

    最终,使用实际证书只是更进一步,但您可能不需要用于开发目的。

    编辑
    之后你需要重启你的守护进程:

    service docker restart 
    

    【讨论】:

    • 我应该把 ["myregistrydomain.com:5000"] 换成这个吧? ["myip:5000"] @marvin
    • 您的 ip 或您在 /etc/hosts 中提供的任何名称
    • 我已经做到了,但它仍然是http: server gave HTTP response to HTTPS client@marvin
    • 我应该提到您需要重新启动守护程序。我将其添加到我的答案中
    • 仍然,不固定 :'( @marvin
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2021-07-24
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多