1. 创建主机

这个主机位置可以随意,可以是你本地的开发机,虚拟机,也可以是私有云的主机,当然,如果是公有云的虚拟机是最好了,因为可以很方便得做 TLS 认证。

我这里选择是 GCP 的 VM,创建完之后获取到一个公网 IP:34.70.232.253

2. 域名解析【可选】

这个最好有,因为当使用 https 的时候,域名会更友好一些,当然 IP 也可以自签证书,但是,不那么友好。我这里是添加了一个 DNS 记录:

  1. registry.liqiang.io -> 34.70.232.253

3. 运行 Docker registry

现在 Docker 已经很流行了,所以已经不用以前那种下载二进制文件,然后再慢慢配置这么麻烦了,我可以直接通过 pull Docker Image 来运行一个 Registry。

4. 配置 Caddy

4.1 安装 Caddy

  1. 因为 Caddy 支持自己申请维护 https,所以我也就不想用 Nginx 来处理了,这里的 Caddy 默认版本是 1.0.3,所以可以直接从 Yum 中下载:
  2. ```
  3. [[email protected]]# yum install -y caddy
  4. ```

4.2 配置 Caddy

这个可以直接写配置文件:

  1. [[email protected].io]# cat Caddyfile
  2. registry.liqiang.io {
  3. tls [email protected].com
  4. basicauth / username password
  5. proxy /v2/ :5000 {
  6. header_upstream X-Forwarded-Proto {scheme}
  7. header_upstream X-Forwarded-For {host}
  8. header_upstream Host {host}
  9. }
  10. }

其中 basicauth / username password 可要可不要,推荐要。

4.3 启动 Caddy

启动 Caddy 就变得非常简单了:

  1. [[email protected].io]# caddy
  2. Activating privacy features... done.
  3. Serving HTTPS on port 443
  4. https://registry.liqiang.io
  5. Serving HTTP on port 80
  6. http://registry.liqiang.io
  7. WARNING: File descriptor limit 1024 is too low for production servers. At least 8192 is recommended. Fix with `ulimit -n 8192`.

5. 试验效果

5.1 Login Docker Registry

  1. [[email protected].io]# docker login registry.liqiang.io
  2. Username: username
  3. Password:
  4. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  5. Configure a credential helper to remove this warning. See
  6. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  7. Login Succeeded

这里的 Username 和 password 就填 4.3 中的就可以了,然后发现登录成功了。

5.2 推送 Image

光登录还不够,下一步是推送 Image,查看一下效果:

  1. [[email protected].io]# docker tag busybox:1.31.0 registry.liqiang.io/busybox:1.31.0
  2. [[email protected].io]# docker push registry.liqiang.io/busybox:1.31.0
  3. The push refers to repository [registry.liqiang.io/busybox]
  4. 0d315111b484: Pushed
  5. 1.31.0: digest: sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649 size: 527

OK,完美工作!

Ref