Add Setup private docker registry & docker_auth on data-server
parent
d9215b7c3e
commit
596533b9fb
|
@ -0,0 +1,76 @@
|
||||||
|
We use `focs.ji.sjtu.edu.cn:5000` for our private [registry](https://hub.docker.com/_/registry) and `focs.ji.sjtu.edu.cn:5001` for [docker_auth](https://github.com/cesanta/docker_auth) to provide authentication. Port 5000 and 5001 on `data-server` are forwarded to focs.ji.sjtu.edu.cn and they are only accessible within the campus network.
|
||||||
|
|
||||||
|
`docker_auth` lets login admins have permission to push to the registry, and anyone to pull from it. We need to `docker login focs.ji.sjtu.edu.cn` on `joj-dev` since it pushes to the registry from gitea actions.
|
||||||
|
|
||||||
|
To run `registry`:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cat /opt/docker-configs/registry/config.yml
|
||||||
|
version: 0.1
|
||||||
|
log:
|
||||||
|
fields:
|
||||||
|
service: registry
|
||||||
|
storage:
|
||||||
|
cache:
|
||||||
|
blobdescriptor: inmemory
|
||||||
|
filesystem:
|
||||||
|
rootdirectory: /var/lib/registry
|
||||||
|
http:
|
||||||
|
addr: :5000
|
||||||
|
headers:
|
||||||
|
X-Content-Type-Options: [nosniff]
|
||||||
|
tls:
|
||||||
|
certificate: "/certs/live/focs.ji.sjtu.edu.cn/fullchain.pem"
|
||||||
|
key: "/certs/live/focs.ji.sjtu.edu.cn/privkey.pem"
|
||||||
|
auth:
|
||||||
|
token:
|
||||||
|
realm: "https://focs.ji.sjtu.edu.cn:5001/auth"
|
||||||
|
service: "Docker registry"
|
||||||
|
issuer: "Acme auth server"
|
||||||
|
rootcertbundle: "/certs/live/focs.ji.sjtu.edu.cn/fullchain.pem"
|
||||||
|
health:
|
||||||
|
storagedriver:
|
||||||
|
enabled: true
|
||||||
|
interval: 10s
|
||||||
|
threshold: 3
|
||||||
|
$ docker run -d --restart=always --name registry-auth -v /etc/letsencrypt/:/certs -v registry-data:/var/lib/registry -v /opt/docker-configs/registry/config.yml:/etc/docker/registry/config.yml -p 5000:5000 registry:2.8.3
|
||||||
|
```
|
||||||
|
|
||||||
|
To run `docker_auth`:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cat /opt/docker-configs/docker_auth/auth_config.yml
|
||||||
|
# A simple example. See reference.yml for explanation of all options.
|
||||||
|
#
|
||||||
|
# auth:
|
||||||
|
# token:
|
||||||
|
# realm: "https://127.0.0.1:5001/auth"
|
||||||
|
# service: "Docker registry"
|
||||||
|
# issuer: "Acme auth server"
|
||||||
|
# rootcertbundle: "/path/to/server.pem"
|
||||||
|
|
||||||
|
server:
|
||||||
|
addr: ":5001"
|
||||||
|
certificate: "/certs/live/focs.ji.sjtu.edu.cn/fullchain.pem"
|
||||||
|
key: "/certs/live/focs.ji.sjtu.edu.cn/privkey.pem"
|
||||||
|
|
||||||
|
token:
|
||||||
|
issuer: "Acme auth server" # Must match issuer in the Registry config.
|
||||||
|
expiration: 900
|
||||||
|
|
||||||
|
users:
|
||||||
|
# Password is specified as a BCrypt hash. Use `htpasswd -nB USERNAME` to generate.
|
||||||
|
"admin":
|
||||||
|
password: "$2y$05$LO.vzwpWC5LZGqThvEfznu8qhb5SGqvBSWY1J3yZ4AxtMRZ3kN5jC" # badmin
|
||||||
|
"": {} # Allow anonymous (no "docker login") access.
|
||||||
|
|
||||||
|
acl:
|
||||||
|
- match: { account: "admin" }
|
||||||
|
actions: ["*"]
|
||||||
|
comment: "Admin has full access to everything."
|
||||||
|
- match: { account: "" }
|
||||||
|
actions: ["pull"]
|
||||||
|
comment: "Anonymous users can pull any image."
|
||||||
|
# Access is denied by default.
|
||||||
|
$ docker run -d --restart=always --name docker_auth -v /etc/letsencrypt/:/certs -p 5001:5001 -v /opt/docker-configs/docker_auth:/config:ro -v /var/log/docker_auth:/logs cesanta/docker_auth:1 --v=2 --alsologtostderr /config/auth_config.yml
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user