Skip to content

Commit c9f3ef0

Browse files
committed
Image-cleaner: mount docker dir instead of socket
BinderHub/K8s has a long standing bug where sometimes the docker socket is created as a host directory.
1 parent 36eb908 commit c9f3ef0

File tree

4 files changed

+23
-15
lines changed

4 files changed

+23
-15
lines changed

helm-chart/binderhub/schema.yaml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -495,16 +495,20 @@ properties:
495495
host:
496496
type: object
497497
additionalProperties: false
498-
required: [dockerSocket, dockerLibDir]
498+
required: [dockerSocketDir, dockerSocketName, dockerLibDir]
499499
properties:
500500
enabled:
501501
type: boolean
502502
description: |
503503
DEPRECATED: use imageCleaner.enabled if the cleaner shall not used.
504-
dockerSocket:
504+
dockerSocketDir:
505505
type: string
506506
description: |
507-
TODO
507+
Host directory containing the docker socket.
508+
dockerSocketName:
509+
type: string
510+
description: |
511+
Filename of the docker socket.
508512
dockerLibDir:
509513
type: string
510514
description: |

helm-chart/binderhub/templates/image-cleaner.yaml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ spec:
4949
volumeMounts:
5050
- name: storage-{{ $builderName }}
5151
mountPath: /var/lib/{{ $builderName }}
52-
- name: socket-{{ $builderName }}
53-
mountPath: /var/run/docker.sock
52+
- name: socketdir-{{ $builderName }}
53+
mountPath: /var/run
5454
env:
5555
{{- if .Values.imageCleaner.cordon }}
5656
- name: DOCKER_IMAGE_CLEANER_NODE_NAME
@@ -68,6 +68,8 @@ spec:
6868
value: {{ .Values.imageCleaner.imageGCThresholdHigh | quote }}
6969
- name: DOCKER_IMAGE_CLEANER_THRESHOLD_LOW
7070
value: {{ .Values.imageCleaner.imageGCThresholdLow | quote }}
71+
- name: DOCKER_HOST
72+
value: unix:///var/run/{{ eq $builderName "host" | ternary .Values.imageCleaner.host.dockerSocketName $builder.hostSocketName }}
7173
{{- with .Values.imageCleaner.extraEnv }}
7274
{{- include "jupyterhub.extraEnv" . | nindent 8 }}
7375
{{- end }}
@@ -77,19 +79,19 @@ spec:
7779
- name: storage-host
7880
hostPath:
7981
path: {{ .Values.imageCleaner.host.dockerLibDir }}
80-
- name: socket-host
82+
- name: socketdir-host
8183
hostPath:
82-
path: {{ .Values.imageCleaner.host.dockerSocket }}
83-
type: Socket
84+
path: {{ .Values.imageCleaner.host.dockerSocketDir }}
85+
type: Directory
8486
{{- end }}
8587
{{- if or (eq $builderName "dind") (eq $builderName "pink") }}
8688
- name: storage-{{ $builderName }}
8789
hostPath:
8890
path: {{ eq $builderName "dind" | ternary $builder.hostLibDir $builder.hostStorageDir }}
89-
type: DirectoryOrCreate
90-
- name: socket-{{ $builderName }}
91+
type: Directory
92+
- name: socketdir-{{ $builderName }}
9193
hostPath:
92-
path: {{ $builder.hostSocketDir }}/{{ $builder.hostSocketName }}
93-
type: Socket
94+
path: {{ $builder.hostSocketDir }}
95+
type: Directory
9496
{{- end }}
9597
{{- end }}

helm-chart/binderhub/values.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,10 +335,11 @@ imageCleaner:
335335
# cull images until it drops below 60%
336336
imageGCThresholdHigh: 80
337337
imageGCThresholdLow: 60
338-
# cull images on the host docker as well as dind
338+
# cull images on the host docker
339339
# configuration to use if `imageBuilderType: host` is configured
340340
host:
341-
dockerSocket: /var/run/docker.sock
341+
dockerSocketDir: /var/run
342+
dockerSocketName: docker.sock
342343
dockerLibDir: /var/lib/docker
343344

344345
ingress:

tools/templates/lint-and-validate-values.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ imageCleaner:
128128
imageGCThresholdHigh: 2
129129
imageGCThresholdLow: 1
130130
host:
131-
dockerSocket: /var/run/docker.sock
131+
dockerSocketDir: /var/run
132+
dockerSocketName: docker.sock
132133
dockerLibDir: /var/lib/docker
133134

134135
ingress:

0 commit comments

Comments
 (0)