docker registry 仓库加密

docker registry 仓库加密

1、背景

​ 公司一直用的镜像仓库是docker registry,但是有个安全问题,就是仓库从web ui的浏览到镜像的拉取都是可以直接使用的,还是放到了公网上,只需要知道你的域名那就是畅通无阻了,可以怎么方便怎么来但是这也太方便了,项目是docker跑的微服务,镜像一拉代码直接拿到手 ,前两天还看到个黑客推了个镜像上去,不能在耽误了,赶紧收拾一下。

2、问题解决

​ 在网上看了一些帖子是在仓库容器运行时加一些参数,刚测试的时候是可以的,后面重启了两次容器之后就突然不行了,这里就把配置贴一下,有需求可以搞一下,用的docker-compose

bash 复制代码
version: '3.1'
services:
  registry:
    image: registry:2
    restart: always
    container_name: registry-srv
    ports:
      - 5000:5000
    volumes:
      - /new_mount/docker/registry:/var/lib/registry
      - /home/app/registry/auth:/auth
    environment:
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: "Registry Realm"
    networks:
      - docker_default
  registry-ui:
    image: joxit/docker-registry-ui:static
    restart: always
    container_name: registry-ui
    ports:
      - 18080:80
    environment:
      - REGISTRY_URL=http://registry-srv:5000
      - DELETE_IMAGES=true
    networks:
      - docker_default
networks:
  docker_default:
    external: true

​ registry-ui镜像默认是跑的80,改了一下映射端口,前端使用nginx代理的也是跑的容器,请求头主机配置注释掉了,一打开就报错无法验证sha,这个可以试试怎么回事,我感觉是因为换过仓库的事,htpasswd文件生成可以去网上找一下很多,下面是前端代理的配置。

nash 复制代码
server {
    listen       80;
    listen       8054;
    server_name  registry.xxx.com;
    return 301 https://$server_name$request_uri;
}
server {
    server_name  registry.xxx.com;
    include /etc/nginx/conf.d/include/ssl/oa-ssl;
    location / {
        proxy_pass http://172.26.28.122:18080/;
        add_header Access-Control-Allow-Origin *;
        #proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    location /v2/ {
        proxy_pass http://172.26.28.122:5000;
        add_header Access-Control-Allow-Origin *;
        #proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

}

​ 按我的理解来说上面的配置是可以实现仓库加密的,但还是无法验证通过,我觉的是nginx代理的问题,加上容器是走了两层代理,可能是无法携带验证信息了,有空在研究。

​ 天无绝人之路,找到个其他的方法,直接在前端代理添加验证配置,如果是在'/'匹配规则添加的话他只能验证web ui的访问,对镜像的推拉控制是没有用的,必须要把配置放到/v2/这个匹配规则里面,控制后端接口的访问规则才行,具体原理还不知道怎么回事,先实现了再说。这里放了之后compose文件的加密就不用加。

bash 复制代码
    environment:
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: "Registry Realm"
      #上面这几行删掉就行
bash 复制代码
    location /v2/ {
        stub_status;
        auth_basic "Auth access Blog Input your Passwd!";
        auth_basic_user_file /etc/nginx/conf.d/htpasswd/docker.conf/htpasswd;
        proxy_pass http://172.26.28.122:5000;
        add_header Access-Control-Allow-Origin *;
        #proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

这个破问题还搞了三天

相关推荐
威嵌神州2 小时前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
杨凯凡2 小时前
IT日报|2026-11-13:GitHub 大规模凭据攻击、Signal 形式化验证、Claude 新模型与 AI 安全诉讼
人工智能·安全·github
Decay__3 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
P1Browser3 小时前
账号触发平台安全审核?拆解标准申诉流程与材料清单
大数据·人工智能·安全·多账号管理·指纹浏览器·账户安全·运营合规
java_logo3 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
xbzb4 小时前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
Fnetlink16 小时前
2026年企业安全组网供应商方案推荐
安全
如夏倾城8 小时前
基于格的密码学
安全·密码学·量子计算·可信计算技术
打工仔折腾 AI8 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
无奈笑天下9 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库