全部!!
我正在使用以下 yaml 文件在 K8S 集群中部署私有(private)注册表:
kind: PersistentVolume
apiVersion: v1
metadata:
name: registry
labels:
type: local
spec:
capacity:
storage: 4Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/registry/"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: registry-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
---
apiVersion: v1
kind: Service
metadata:
name: registry
labels:
app: registry
spec:
ports:
- port: 5000
targetPort: 5000
nodePort: 30400
name: registry
selector:
app: registry
tier: registry
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
name: registry-ui
labels:
app: registry
spec:
ports:
- port: 8080
targetPort: 8080
name: registry
selector:
app: registry
tier: registry
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: registry
labels:
app: registry
spec:
strategy:
type: Recreate
template:
metadata:
labels:
app: registry
tier: registry
spec:
containers:
- image: registry:2
name: registry
volumeMounts:
- name: docker
mountPath: /var/run/docker.sock
- name: registry-persistent-storage
mountPath: /var/lib/registry
ports:
- containerPort: 5000
name: registry
- name: registryui
image: hyper/docker-registry-web:latest
ports:
- containerPort: 8080
env:
- name: REGISTRY_URL
value: http://localhost:5000/v2
- name: REGISTRY_NAME
value: cluster-registry
volumes:
- name: docker
hostPath:
path: /var/run/docker.sock
- name: registry-persistent-storage
persistentVolumeClaim:
claimName: registry-claim
我只是想知道在将 docker 镜像推送到本地注册表后没有删除它们的选项。我在这里找到了它应该如何工作的方式:https://github.com/byrnedo/docker-reg-tool .我可以在本地存储库中列出 docker 图像,通过命令行查看所有标签,但无法删除它们。在阅读了 docker 注册表文档后,我发现注册表 docker 需要使用以下
env: REGISTRY_STORAGE_DELETE_ENABLED=true.
运行。我试图将此变量添加到 yaml 文件中:
.........
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: registry
labels:
app: registry
spec:
strategy:
type: Recreate
template:
metadata:
labels:
app: registry
tier: registry
spec:
containers:
- image: registry:2
name: registry
volumeMounts:
- name: docker
mountPath: /var/run/docker.sock
- name: registry-persistent-storage
mountPath: /var/lib/registry
ports:
- containerPort: 5000
name: registry
env:
- name: REGISTRY_STORAGE_DELETE_ENABLED
value: true
但是使用命令
kubectl apply -f manifests/registry.yaml
应用此 yaml 文件返回以下错误信息:Deployment in version "v1beta1" cannot be handled as a Deployment: v1beta1.Deployment.Spec: v1beta1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.Env: []v1.EnvVar: v1.EnvVar.Value: ReadString: expects " or n, but found t, error found in #10 byte of ...|,"value":true}],"ima|..., bigger context ...|"name":"REGISTRY_STORAGE_DELETE_ENABLED","value":true}],"image":"registry:2","name":"registry","port|...
在我找到另一个建议后:
The registry accepts configuration settings either via a file or via environment variables. So the environment variable REGISTRY_STORAGE_DELETE_ENABLED=true is equivalent to this in your config file:
storage:
delete:
enabled: true
我在我的 yaml 文件中也尝试过这个选项,但仍然没有运气......
非常感谢任何有关如何在我的 yaml 文件中启用 docker 图像删除的建议。
最佳答案
true
的值在 yaml 中被解析为 bool 数据类型,语法调用字符串。您需要明确引用它:
value: "true"
关于docker - 无法从私有(private) Docker 注册表中删除图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55157183/