registry(docker私有仓库)
buyfakett
registry
私有仓库
docker-compose.yml
version: "3"
services:
registry:
image: registry:2.8.3
container_name: registry
restart: always
ports:
- 5000:5000
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /etc/docker/registry/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
volumes:
- ./data/registry:/var/lib/registry
- ./config:/etc/docker/registry
registry-web:
image: klausmeyer/docker-registry-browser
container_name: registry-web
ports:
- 8083:8080
environment:
- DOCKER_REGISTRY_URL=https://xxx.top
- PORT=8080
- NO_SSL_VERIFICATION=false
- PUBLIC_REGISTRY_URL=xxx.top
- TOKEN_AUTH_USER=
- TOKEN_AUTH_PASSWORD=
- ENABLE_DELETE_IMAGES=true
- SECRET_KEY_BASE=xxx
config/config.yaml
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
TIP
SECRET_KEY_BASE
参数使用openssl rand -hex 64
获取
启动好以后,如果没有配过ssl证书,或者ssl证书链不完整(修复地址),需要在对应的服务器上在/etc/docker/daemon.json
中增加"insecure-registries"
配置
{
"insecure-registries": [
"http://xxx.com"
],
"registry-mirrors": [
"https://pee6w651.mirror.aliyuncs.com"
],
"data-root": "/data/data-docker",
"log-driver": "syslog",
"log-opts": {
"syslog-address": "tcp://127.0.0.1:514",
"tag": "docker/{{.Name}},"
}
}
TIP
如果不需要密码去掉这三行
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /etc/docker/registry/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
TIP
如果有密码,则需要生成密码并配置
yum install -y httpd-tools
htpasswd -c -B -b htpasswd username password
TIP
最后在需要使用的机器上登录docker login xxx.com
代理仓库
registry-proxy.sh
#!/bin/bash
# 海外代理
docker rm -f registry
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-e REGISTRY_HTTP_ADDR=":5000" \
-e REGISTRY_HTTP_HEADERS_X-Content-Type-Options="[nosniff]" \
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
-e REGISTRY_STORAGE_MAINTENANCE="{\"readonly\":{\"enabled\":true},\"uploadpurging\":{\"enabled\":true,\"age\":\"8760h\",\"dryrun\":false,\"interval\":\"24h\"}}" \
-v ./data/registry:/var/lib/registry \
registry:2.8.3
TIP
然后在registry-mirrors
中填上域名即可(原来填写镜像的地方)
readonly.enabled
:这个选项将 Docker Registry 设置为只读模式。设置为 true 表示启用只读模式,在这种模式下,注册表中的内容不能被修改或删除,只能被读取。
uploadpurging.enabled
:这个选项启用上传清理功能。设置为 true 表示启用此功能。
uploadpurging.age
:这个选项指定了未完成的上传在被清理之前的最大年龄。8760h 表示 8760 小时,也就是一年。这意味着任何未完成的上传文件如果超过 8760 小时(1 年)将会被清理。
uploadpurging.dryrun
:这个选项用于测试清理功能。设置为 false 表示实际执行清理操作,而不是仅进行模拟。
uploadpurging.interval
:这个选项指定了执行清理操作的时间间隔。24h 表示每 24 小时执行一次清理操作。