[英]Using docker socket in Kubernetes pod
我想修剪docker 圖像,我使用node-docker-api
編寫了一個小的 Docker 圖像,並且能夠成功地在本地對其進行測試。
由於我已將DaemonSet
部署到 Kubernetes,因此 pod 無法訪問 Docker 套接字:
Error: connect EACCES /var/run/docker.sock
deployment.yaml
如下所示:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
labels:
name: docker-image-cleanup
name: docker-image-cleanup
spec:
template:
metadata:
labels:
app: docker-image-cleanup
spec:
volumes:
- name: docker-sock
hostPath:
path: "/var/run/docker.sock"
type: File
- name: docker-directory
hostPath:
path: "/var/lib/docker"
containers:
- name: docker-image-cleanup
image: image:tag
securityContext:
privileged: true
env:
- name: PRUNE_INTERVAL_SECONDS
value: "30"
- name: PRUNE_DANGLING
value: "true"
volumeMounts:
- mountPath: /var/run/docker.sock
name: docker-sock
readOnly: false
- mountPath: "/var/lib/docker"
name: docker-directory
readOnly: false
運行 AKS v1.13.10 - 如果相關
不能保證您的 kubernetes 集群實際上使用 docker 作為容器引擎。 由於有許多替代方案,例如 cri-o 和 kata 容器,因此您的應用程序/部署不應對底層容器引擎做出任何假設。
Kubernetes 負責自動清理未使用的容器映像。 如果您自己運行集群,請參閱有關如何配置它的文檔: https://kubernetes.io/docs/concepts/cluster-administration/kubelet-garbage-collection/
除此之外,您似乎對套接字有一個簡單的權限問題:確保您在清理容器中的應用程序以 root 身份運行或具有適當的用戶來訪問套接字。
我已將runAsUser: 0
添加到容器屬性中:
containers:
- name: docker-image-cleanup
image: image:tag
securityContext:
privileged: true
runAsUser: 0
現在它可以工作了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.