|
|
1 سال پیش | |
|---|---|---|
| .. | ||
| registry | 1 سال پیش | |
| README.md | 1 سال پیش | |
| docker-compose.yml | 1 سال پیش | |
Docker Registry User Interface The simplest and most complete UI for your private registry!
version: '3.8'
services:
registry-ui:
image: joxit/docker-registry-ui:main
restart: always
ports:
- 80:80
registry-server:
image: registry:2.8.2
restart: always
volumes:
- ./registry/data:/var/lib/registry
首先,使用 htpasswd 命令生成一个包含用户名和密码的认证文件。如果你没有安装 htpasswd,可以通过以下方式安装:
对于 Ubuntu 或 Debian 系统:
sudo apt-get install apache2-utils
对于 CentOS 或 Fedora 系统:
sudo yum install httpd-tools
然后,使用 htpasswd 创建认证文件:
mkdir -p registry/auth
htpasswd -Bc registry/auth/htpasswd myuser
registry/auth/htpasswd 是保存认证信息的文件路径,myuser 是你要添加的用户名。系统会提示你输入并确认密码。
接下来,修改你的 docker-compose.yml 文件,将认证文件挂载到容器中,并启用认证:
version: '3.8'
services:
registry-server:
image: registry:2.8.2
restart: always
environment:
REGISTRY_AUTH: htpasswd # 新增认证配置
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd # 新增认证配置
REGISTRY_AUTH_HTPASSWD_REALM: basic-realm # 新增认证配置
volumes:
- ./registry/data:/var/lib/registry
- ./registry/auth:/auth # 新增认证文件挂载
保存 docker-compose.yml 文件,然后启动或重启 Docker Registry:
docker-compose up -d
在客户端推送或拉取镜像之前,需要先登录到 Docker Registry:
docker login <registry-server>:5000
使用之前在 htpasswd 文件中设置的用户名和密码。
成功登录后,你可以使用 Docker 命令推送或拉取镜像,例如:
docker tag my-image:latest <registry-server>:5000/my-image:latest
docker push <registry-server>:5000/my-image:latest
version: '3.8'
services:
registry-ui:
image: joxit/docker-registry-ui:main
restart: always
ports:
- 10023:80 # 按需修改
environment:
- REGISTRY_URL=https://xxx.maplesnow.cn # 配置成自己的域名
- SINGLE_REGISTRY=true
- REGISTRY_TITLE=Docker Registry UI
- DELETE_IMAGES=true
- SHOW_CONTENT_DIGEST=true
- NGINX_PROXY_PASS_URL=http://registry-server:5000
- TAGLIST_PAGE_SIZE=100
- REGISTRY_SECURED=false
- CATALOG_ELEMENTS_LIMIT=1000
container_name: registry-ui
networks:
- xxx-proxy # 对应network中网络,根据实际情况调整
registry-server:
container_name: registry-server
image: registry:2.8.2
restart: always
expose:
- 5000
environment:
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: "['https://xxx.maplesnow.cn']" # 和registry-ui中REGISTRY_URL保持一致
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials: '[true]'
REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'
REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: '[Docker-Content-Digest]'
REGISTRY_STORAGE_DELETE_ENABLED: 'true'
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd # 默认账号密码为admin / admin
REGISTRY_AUTH_HTPASSWD_REALM: basic-realm
volumes:
- ./registry/data:/var/lib/registry
- ./registry/auth:/auth
networks:
- xxx-proxy # 对应network中网络,根据实际情况调整
networks:
xxx-proxy: # 外部网络,用于nginx容器实例连通,进行反向代理,
external: true
说明:Nginx反向代理到Registry-ui的服务端口。因为Registry服务的80端口在容器内部本身也是一个Nginx服务。默认访问前端UI界面,所有访问的registry-server的路由都带了/v2的前缀,会被反代到Registry-server
配置成功后,访问对应域名,htpasswd认证,默认的账号为admin,密码为admin