Compare commits

...

6 Commits

Author SHA1 Message Date
bboysoul 91b88bc815 1. add npm 2025-03-18 14:59:21 +08:00
bboysoul 58f5193063
fix 2024-06-14 10:36:49 +08:00
bboysoul 393eff3504
1. 添加k8s相关的配置 2024-06-14 10:32:50 +08:00
bboysoul 67fb5505af
1. 添加gitleaks 2024-06-12 17:24:17 +08:00
bboysoul ed07c7d62f
1. 更新registry镜像版本
2. 创建全局docker-compose 文件
2024-06-12 17:21:40 +08:00
bboysoul 2c0e4cff6c
Update readme.md 2024-06-12 10:08:17 +08:00
41 changed files with 697 additions and 8 deletions

13
.github/workflows/gitleaks.yaml vendored Normal file
View File

@ -0,0 +1,13 @@
name: gitleaks
on: [push]
jobs:
scan:
name: gitleaks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -0,0 +1,69 @@
version: "3"
services:
k8sgcr:
image: "registry:2.8.3"
container_name: "k8sgcr"
restart: "always"
volumes:
- "/etc/localtime:/etc/localtime"
- "./k8sgcr/data:/var/lib/registry"
- "./k8sgcr/config.yml:/etc/docker/registry/config.yml"
ports:
- "5004:5000"
ghcr:
image: "registry:2.8.3"
container_name: "ghcr"
restart: "always"
volumes:
- "/etc/localtime:/etc/localtime"
- "./ghcr/data:/var/lib/registry"
- "./ghcr/config.yml:/etc/docker/registry/config.yml"
ports:
- "5001:5000"
gcr:
image: "registry:2.8.3"
container_name: "gcr"
restart: "always"
volumes:
- "/etc/localtime:/etc/localtime"
- "./gcr/data:/var/lib/registry"
- "./gcr/config.yml:/etc/docker/registry/config.yml"
ports:
- "5003:5000"
dockerhub:
image: "registry:2.8.3"
container_name: "dockerhub"
restart: "always"
volumes:
- "/etc/localtime:/etc/localtime"
- "./dockerhub/data:/var/lib/registry"
- "./dockerhub/config.yml:/etc/docker/registry/config.yml"
ports:
- "5000:5000"
registryk8s:
image: "registry:2.8.3"
container_name: "registryk8s"
restart: "always"
volumes:
- "/etc/localtime:/etc/localtime"
- "./registryk8s/data:/var/lib/registry"
- "./registryk8s/config.yml:/etc/docker/registry/config.yml"
ports:
- "5005:5000"
# nginx-proxy-manager:
# image: 'jc21/nginx-proxy-manager:2.11.3'
# container_name: nginx-proxy-manager
# restart: always
# ports:
# - '80:80'
# - '82:81'
# - '443:443'
# volumes:
# - "/etc/localtime:/etc/localtime"
# - ./npm/data:/data
# - ./npm/letsencrypt:/etc/letsencrypt

View File

@ -1,7 +1,7 @@
version: "3"
services:
dockerhub:
image: "registry:2.8.1"
image: "registry:2.8.3"
container_name: "dockerhub"
restart: "always"
volumes:

View File

@ -1,7 +1,7 @@
version: "3"
services:
gcr:
image: "registry:2.8.1"
image: "registry:2.8.3"
container_name: "gcr"
restart: "always"
volumes:

View File

@ -1,7 +1,7 @@
version: "3"
services:
ghcr:
image: "registry:2.8.1"
image: "registry:2.8.3"
container_name: "ghcr"
restart: "always"
volumes:

View File

@ -1,7 +1,7 @@
version: "3"
services:
k8sgcr:
image: "registry:2.8.1"
image: "registry:2.8.3"
container_name: "k8sgcr"
restart: "always"
volumes:

View File

@ -1,7 +1,7 @@
version: "3"
services:
quay:
image: "registry:2.8.1"
image: "registry:2.8.3"
container_name: "quay"
restart: "always"
volumes:

View File

@ -1,7 +1,7 @@
version: "3"
services:
registryk8s:
image: "registry:2.8.1"
image: "registry:2.8.3"
container_name: "registryk8s"
restart: "always"
volumes:

16
kubernetes/dockerhub/config.yml Executable file
View File

@ -0,0 +1,16 @@
version: 0.1
storage:
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
maintenance:
uploadpurging:
enabled: true
age: 168h
dryrun: false
interval: 45m
http:
addr: 0.0.0.0:5000
proxy:
remoteurl: https://registry-1.docker.io

View File

@ -0,0 +1,10 @@
resources:
- sts.yaml
- svc.yaml
configMapGenerator:
- name: dockerhub-cnf
files:
- config.yml
options:
disableNameSuffixHash: true

46
kubernetes/dockerhub/sts.yaml Executable file
View File

@ -0,0 +1,46 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: dockerhub
namespace: registry
spec:
selector:
matchLabels:
app: dockerhub
serviceName: dockerhub
replicas: 1
template:
metadata:
labels:
app: dockerhub
spec:
containers:
- name: dockerhub
image: registry:2.8.1
ports:
- containerPort: 5000
name: dockerhub
volumeMounts:
- name: dockerhub-data
mountPath: /var/lib/registry
- name: timezone
mountPath: /etc/localtime
readOnly: true
- name: dockerhub-cnf
mountPath: /etc/docker/registry/config.yml
subPath: config.yml
volumes:
- name: dockerhub-cnf
configMap:
name: dockerhub-cnf
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
volumeClaimTemplates:
- metadata:
name: dockerhub-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi

11
kubernetes/dockerhub/svc.yaml Executable file
View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: dockerhub
namespace: registry
spec:
selector:
app: dockerhub
ports:
- port: 5000
targetPort: 5000

16
kubernetes/gcr/config.yml Executable file
View File

@ -0,0 +1,16 @@
version: 0.1
storage:
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
maintenance:
uploadpurging:
enabled: true
age: 168h
dryrun: false
interval: 1m
http:
addr: 0.0.0.0:5000
proxy:
remoteurl: https://gcr.io

View File

@ -0,0 +1,10 @@
resources:
- sts.yaml
- svc.yaml
configMapGenerator:
- name: gcr-cnf
files:
- config.yml
options:
disableNameSuffixHash: true

46
kubernetes/gcr/sts.yaml Executable file
View File

@ -0,0 +1,46 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: gcr
namespace: registry
spec:
selector:
matchLabels:
app: gcr
serviceName: gcr
replicas: 1
template:
metadata:
labels:
app: gcr
spec:
containers:
- name: gcr
image: registry:2.8.1
ports:
- containerPort: 5000
name: gcr
volumeMounts:
- name: gcr-data
mountPath: /var/lib/registry
- name: timezone
mountPath: /etc/localtime
readOnly: true
- name: gcr-cnf
mountPath: /etc/docker/registry/config.yml
subPath: config.yml
volumes:
- name: gcr-cnf
configMap:
name: gcr-cnf
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
volumeClaimTemplates:
- metadata:
name: gcr-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi

11
kubernetes/gcr/svc.yaml Executable file
View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: gcr
namespace: registry
spec:
selector:
app: gcr
ports:
- port: 5000
targetPort: 5000

16
kubernetes/ghcr/config.yml Executable file
View File

@ -0,0 +1,16 @@
version: 0.1
storage:
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
maintenance:
uploadpurging:
enabled: true
age: 168h
dryrun: false
interval: 1m
http:
addr: 0.0.0.0:5000
proxy:
remoteurl: https://ghcr.io

View File

@ -0,0 +1,10 @@
resources:
- sts.yaml
- svc.yaml
configMapGenerator:
- name: ghcr-cnf
files:
- config.yml
options:
disableNameSuffixHash: true

46
kubernetes/ghcr/sts.yaml Executable file
View File

@ -0,0 +1,46 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: ghcr
namespace: registry
spec:
selector:
matchLabels:
app: ghcr
serviceName: ghcr
replicas: 1
template:
metadata:
labels:
app: ghcr
spec:
containers:
- name: ghcr
image: registry:2.8.1
ports:
- containerPort: 5000
name: ghcr
volumeMounts:
- name: ghcr-data
mountPath: /var/lib/registry
- name: timezone
mountPath: /etc/localtime
readOnly: true
- name: ghcr-cnf
mountPath: /etc/docker/registry/config.yml
subPath: config.yml
volumes:
- name: ghcr-cnf
configMap:
name: ghcr-cnf
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
volumeClaimTemplates:
- metadata:
name: ghcr-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi

11
kubernetes/ghcr/svc.yaml Executable file
View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: ghcr
namespace: registry
spec:
selector:
app: ghcr
ports:
- port: 5000
targetPort: 5000

75
kubernetes/ingress.yaml Executable file
View File

@ -0,0 +1,75 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: registry-ingress
namespace: registry
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
rules:
- host: "quay.example.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: quay
port:
number: 5000
- host: "registryk8s.example.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: registryk8s
port:
number: 5000
- host: "gcr.example.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: gcr
port:
number: 5000
- host: "ghcr.example.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: ghcr
port:
number: 5000
- host: "k8sgcr.example.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: k8sgcr
port:
number: 5000
- host: "hub.example.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: dockerhub
port:
number: 5000
tls:
- hosts:
- example.com
secretName: example.com-tls

16
kubernetes/k8sgcr/config.yml Executable file
View File

@ -0,0 +1,16 @@
version: 0.1
storage:
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
maintenance:
uploadpurging:
enabled: true
age: 168h
dryrun: false
interval: 1m
http:
addr: 0.0.0.0:5000
proxy:
remoteurl: https://k8s.gcr.io

View File

@ -0,0 +1,10 @@
resources:
- sts.yaml
- svc.yaml
configMapGenerator:
- name: k8sgcr-cnf
files:
- config.yml
options:
disableNameSuffixHash: true

46
kubernetes/k8sgcr/sts.yaml Executable file
View File

@ -0,0 +1,46 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: k8sgcr
namespace: registry
spec:
selector:
matchLabels:
app: k8sgcr
serviceName: k8sgcr
replicas: 1
template:
metadata:
labels:
app: k8sgcr
spec:
containers:
- name: k8sgcr
image: registry:2.8.1
ports:
- containerPort: 5000
name: k8sgcr
volumeMounts:
- name: k8sgcr-data
mountPath: /var/lib/registry
- name: timezone
mountPath: /etc/localtime
readOnly: true
- name: k8sgcr-cnf
mountPath: /etc/docker/registry/config.yml
subPath: config.yml
volumes:
- name: k8sgcr-cnf
configMap:
name: k8sgcr-cnf
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
volumeClaimTemplates:
- metadata:
name: k8sgcr-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi

11
kubernetes/k8sgcr/svc.yaml Executable file
View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: k8sgcr
namespace: registry
spec:
selector:
app: k8sgcr
ports:
- port: 5000
targetPort: 5000

14
kubernetes/kustomization.yaml Executable file
View File

@ -0,0 +1,14 @@
resources:
- registryk8s
- quay
- dockerhub
- gcr
- ghcr
- k8sgcr
- ingress.yaml
namespace: registry
images:
- name: registry
newTag: 2.8.3

16
kubernetes/quay/config.yml Executable file
View File

@ -0,0 +1,16 @@
version: 0.1
storage:
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
maintenance:
uploadpurging:
enabled: true
age: 168h
dryrun: false
interval: 1m
http:
addr: 0.0.0.0:5000
proxy:
remoteurl: https://quay.io

View File

@ -0,0 +1,10 @@
resources:
- sts.yaml
- svc.yaml
configMapGenerator:
- name: quay-cnf
files:
- config.yml
options:
disableNameSuffixHash: true

46
kubernetes/quay/sts.yaml Executable file
View File

@ -0,0 +1,46 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: quay
namespace: registry
spec:
selector:
matchLabels:
app: quay
serviceName: quay
replicas: 1
template:
metadata:
labels:
app: quay
spec:
containers:
- name: quay
image: registry:2.8.1
ports:
- containerPort: 5000
name: quay
volumeMounts:
- name: quay-data
mountPath: /var/lib/registry
- name: timezone
mountPath: /etc/localtime
readOnly: true
- name: quay-cnf
mountPath: /etc/docker/registry/config.yml
subPath: config.yml
volumes:
- name: quay-cnf
configMap:
name: quay-cnf
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
volumeClaimTemplates:
- metadata:
name: quay-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi

11
kubernetes/quay/svc.yaml Executable file
View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: quay
namespace: registry
spec:
selector:
app: quay
ports:
- port: 5000
targetPort: 5000

View File

@ -0,0 +1,16 @@
version: 0.1
storage:
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
maintenance:
uploadpurging:
enabled: true
age: 168h
dryrun: false
interval: 1m
http:
addr: 0.0.0.0:5000
proxy:
remoteurl: https://registry.k8s.io

View File

@ -0,0 +1,10 @@
resources:
- sts.yaml
- svc.yaml
configMapGenerator:
- name: registryk8s-cnf
files:
- config.yml
options:
disableNameSuffixHash: true

46
kubernetes/registryk8s/sts.yaml Executable file
View File

@ -0,0 +1,46 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: registryk8s
namespace: registry
spec:
selector:
matchLabels:
app: registryk8s
serviceName: registryk8s
replicas: 1
template:
metadata:
labels:
app: registryk8s
spec:
containers:
- name: registryk8s
image: registry:2.8.1
ports:
- containerPort: 5000
name: registryk8s
volumeMounts:
- name: registryk8s-data
mountPath: /var/lib/registry
- name: timezone
mountPath: /etc/localtime
readOnly: true
- name: registryk8s-cnf
mountPath: /etc/docker/registry/config.yml
subPath: config.yml
volumes:
- name: registryk8s-cnf
configMap:
name: registryk8s-cnf
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
volumeClaimTemplates:
- metadata:
name: registryk8s-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 50Gi

11
kubernetes/registryk8s/svc.yaml Executable file
View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: registryk8s
namespace: registry
spec:
selector:
app: registryk8s
ports:
- port: 5000
targetPort: 5000

View File

@ -2,9 +2,17 @@
这是为了方便大家做各个镜像仓库代理的
### 操作
### Docker教程
你想要代理哪一个仓库就直接进入哪一个文件夹
进入docker目录
如果你想要启动所有的镜像仓库直接执行
`docker-compose up -d`
但是你想要单独代理某一个仓库就直接进入那个文件夹
`cd dockerhub`
`docker-compose up -d`
@ -12,6 +20,10 @@
每一个镜像仓库对外的端口都是不一样的当然你也可以使用nginx统一反向代理一下
### k8s教程
都在用k8s了还想要教程
### 注意
大家可以看下配置文件
@ -19,3 +31,11 @@
默认168h小时之后会清理缓存也就是你拉取的镜像缓存
喜欢的给个star哦
### 其他教程
`https://51.ruyo.net/18687.html`
### 广告位
我的tg频道 [https://t.me/bboyapp](https://t.me/bboyapp)