Nexus 3和Nginx配置docker私有栈

目的:用Nexus搭建一个docker私有仓库(栈类型为hosted),实现自建镜像的上推下载。

背景:后台架构升级相关,没有运维只能get my hands dirty…

具体配置

  1. 节点一(假设为example.com):

    1. 安装运行Nexus 3:这个直接使用了sonatype/nexus3 镜像

    2. 登陆Nexus控制台admin页面,新建Docker (hosted)栈:Repository ConnectorHTTP并填写系统空闲端口、假设为10001(用docker时要记得将这个端口也一并开放)。

  2. 节点二(假设为proxy.com):

    1. 准备证书:证书的host应该是docker push/pull时使用的域名,proxy情况下是Nginx节点而不是Nexus节点。有认证的就最好,但目前只是测试所以用的是自签名的,生成操作如下:
      先参考了Sonatype Knowledge Base的这篇Using Self-Signed Certificates with Nexus Repository Manager and Docker Daemon,生成创建java keystore文件;
      然后参考了这个SE提问导出证书和密钥文件,假设命名成:proxy.com.cert 和 proxy.com.key(只是清楚起见)。
      其实self-signed证书应该是可以用openssl直接生成的,只是开始时先试了Nexus直接暴露ssl端口的方法、就按上面的教程往后走了(ssl这块还是有太多不了解的…….)。

    2. 安装运行Nginx:Nginx需要启用https模块,下载src包configure的话可以参考这篇文章:

      ./configure --with-http_ssl_module --with-openssl={openssl的源码文件夹位置}    

      用docker/nginx的话至少tag alpine的就已经有引入。

    3. 增加Nginx反向代理:

      server {
        listen 1234 ssl;   # 假设1234端口未占用
        server_name           proxy.com;
        ssl_certificate       /path/to/proxy.com.crt;
        ssl_certificate_key   /path/to/proxy.com.key;
        location / {
          proxy_pass http://example.com:10001;  # 前面设置的port
        }   
        client_max_body_size 100M; 
      }

      Nginx默认client_max_body_size只有1M,调大目的是支持镜像上推,避免client intended to send too large chunked body 错误。

  3. 节点三/开发环境等:

    1. 安装运行docker:按官方文档照做就行。

    2. 自签名证书的话,需要添加docker信任:参考Insecure Registry的说明步骤、将前面的proxy.com.crt放至相应的/etc/docker/certs.d/proxy.com:1234文件夹下并重命名成ca.crt,**无需重启**docker。

    3. 验证使用:这个可以参考Nexus文档的10.7节往后,例如:

      docker login proxy.com:1234    # 输入nexus登入账号
      docker tag hello-world:latest proxy.com:1234/hello-world:latest
      docker push proxy.com:1234/hello-world:latest
      docker pull proxy.com:1234/hello-world:latest

其他

  1. 用Nexus而不是Docker Registry/Docker Hub?
    其实开始时并不知道Docker Registry,然后boss说他们以前就用Nexus挺好用,再加上前面刚搭好maven私有栈的惯性,再看到Nexus3官方说明书提到的一些好处…..总之三方工具可能更方便快速使用,原生框架可能更有助于技术学习,看实际需求吧。

  2. 用Nginx proxy而不是Nexus HTTPS Connector?
    实际试下来确实是反向代理更清晰灵活(Using A Reverse Proxy Server小节的There are a few advantages….),然后在“了解Nginx https配置是很有必要的”前提下、proxy方式用页面创建完栈就好、无需修改Nexus具体配置文件、显得更加简便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值