返回介绍

Nexus 3

发布于 2019-11-10 06:06:40 字数 10932 浏览 924 评论 0 收藏 0

Nexus3.x 的私有仓库

使用 Docker 官方的 Registry 创建的仓库面临一些维护问题。比如某些镜像删除以后空间默认是不会回收的,需要一些命令去回收空间然后重启 Registry 程序。在企业中把内部的一些工具包放入 Nexus 中是比较常见的做法,最新版本 Nexus3.x 全面支持 Docker 的私有镜像。所以使用 Nexus3.x 一个软件来管理 Docker , Maven , Yum , PyPI 等是一个明智的选择。

启动 Nexus 容器

$ docker run -d --name nexus3 --restart=always \    -p 8081:8081 \    --mount src=nexus-data,target=/nexus-data \    sonatype/nexus3

等待 3-5 分钟,如果 nexus3 容器没有异常退出,那么你可以使用浏览器打开 http://YourIP:8081 访问 Nexus 了。

第一次启动 Nexus 的默认帐号是 admin 密码是 admin123 登录以后点击页面上方的齿轮按钮进行设置。

创建仓库

创建一个私有仓库的方法: Repository->Repositories 点击右边菜单 Create repository 选择 docker (hosted)

  • Name: 仓库的名称
  • HTTP: 仓库单独的访问端口
  • Enable Docker V1 API: 如果需要同时支持 V1 版本请勾选此项(不建议勾选)。
  • Hosted -> Deployment pollcy: 请选择 Allow redeploy 否则无法上传 Docker 镜像。

其它的仓库创建方法请各位自己摸索,还可以创建一个 docker (proxy) 类型的仓库链接到 DockerHub 上。再创建一个 docker (group) 类型的仓库把刚才的 hosted 与 proxy 添加在一起。主机在访问的时候默认下载私有仓库中的镜像,如果没有将链接到 DockerHub 中下载并缓存到 Nexus 中。

添加访问权限

菜单 Security->Realms 把 Docker Bearer Token Realm 移到右边的框中保存。

添加用户规则:菜单 Security->Roles->Create rolePrivlleges 选项搜索 docker 把相应的规则移动到右边的框中然后保存。

添加用户:菜单 Security->Users->Create local userRoles 选项中选中刚才创建的规则移动到右边的窗口保存。

NGINX 加密代理

证书的生成请参见 私有仓库高级配置 里面证书生成一节。

NGINX 示例配置如下

upstream register{    server "YourHostName OR IP":5001; #端口为上面添加的私有镜像仓库是设置的 HTTP 选项的端口号    check interval=3000 rise=2 fall=10 timeout=1000 type=http;    check_http_send "HEAD / HTTP/1.0\r\n\r\n";    check_http_expect_alive http_4xx;}server {    server_name YourDomainName;#如果没有 DNS 服务器做解析,请删除此选项使用本机 IP 地址访问    listen       443 ssl;    ssl_certificate key/example.crt;    ssl_certificate_key key/example.key;    ssl_session_timeout  5m;    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    ssl_ciphers  HIGH:!aNULL:!MD5;    ssl_prefer_server_ciphers   on;    large_client_header_buffers 4 32k;    client_max_body_size 300m;    client_body_buffer_size 512k;    proxy_connect_timeout 600;    proxy_read_timeout   600;    proxy_send_timeout   600;    proxy_buffer_size    128k;    proxy_buffers       4 64k;    proxy_busy_buffers_size 128k;    proxy_temp_file_write_size 512k;    location / {        proxy_set_header Host $host;        proxy_set_header X-Forwarded-Proto $scheme;        proxy_set_header X-Forwarded-Port $server_port;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_http_version 1.1;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection $connection_upgrade;        proxy_redirect off;        proxy_set_header X-Real-IP $remote_addr;        proxy_pass http://register;        proxy_read_timeout 900s;    }    error_page   500 502 503 504  /50x.html;}

Docker 主机访问镜像仓库

如果不启用 SSL 加密可以通过前面章节的方法添加信任地址到 Docker 的配置文件中然后重启 Docker

使用 SSL 加密以后程序需要访问就不能采用修改配置的访问了。具体方法如下:

$ openssl s_client -showcerts -connect YourDomainName OR HostIP:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >ca.crt$ cat ca.crt | sudo tee -a /etc/ssl/certs/ca-certificates.crt$ systemctl restart docker

使用 docker login YourDomainName OR HostIP 进行测试,用户名密码填写上面 Nexus 中生成的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文