1. 创建主机

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

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

2. 域名解析【可选】

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

registry.liqiang.io -> 34.70.232.253

3. 运行 Docker registry

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

4. 配置 Caddy

4.1 安装 Caddy

因为 Caddy 支持自己申请维护 https,所以我也就不想用 Nginx 来处理了,这里的 Caddy 默认版本是 1.0.3,所以可以直接从 Yum 中下载:

[[email protected]]# yum install -y caddy

4.2 配置 Caddy

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

[[email protected]]# cat Caddyfile
registry.liqiang.io {
        tls [email protected]
        basicauth / username password
        proxy /v2/ :5000 { 
                header_upstream X-Forwarded-Proto {scheme}
                header_upstream X-Forwarded-For {host}
                header_upstream Host {host}
        }
}

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

4.3 启动 Caddy

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

[[email protected]]# caddy
Activating privacy features... done.

Serving HTTPS on port 443 
https://registry.liqiang.io


Serving HTTP on port 80 
http://registry.liqiang.io

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

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

Login Succeeded

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

5.2 推送 Image

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

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

OK,完美工作!

6. Ref