Estoy intentando ejecutar una ventana acoplable en un escenario de ventana acoplable dentro de un clúster de Kubernetes administrado por Azure (aks).
He montado el socket Docker Unix en el pod. Mi intención es utilizar aks pods como agentes de Azure Devops para construir y probar mi proyecto. Esto requiere una base de datos y un wiremock ejecutándose en Docker, lo que significa que creará una red Docker.
A continuación puedes ver mi configuración actual:
Name: my-devopsagent-javaagent-64855bb796-smpkz
Namespace: my-devops-agents
Priority: 0
Node: aks-default-21935887-vmss000000/10.128.0.4
Start Time: Mon, 16 Dec 2019 14:09:04 +0200
Labels: app=my-devopsagent-javaagent
pod-template-hash=64855bb796
Annotations: <none>
Status: Running
IP: 10.128.0.28
IPs: <none>
Controlled By: ReplicaSet/my-devopsagent-javaagent-64855bb796
Containers:
my-devopsagent-javaagent:
Container ID: docker://ffffff26c3b4a92678a95f446c0ada685986f30c56138109b080
Image: mycontainerregistry.azurecr.io/mycompany/devopsagent/javaagent:latest
Image ID: docker-pullable://mycontainerregistry.azurecr.io/mycompany/devopsagent/javaagent@sha256:4422edb12d1b4bbff92bc36e7d33715222daab6ef3439cfffffff
Port: <none>
Host Port: <none>
State: Running
Started: Mon, 16 Dec 2019 14:09:06 +0200
Ready: True
Restart Count: 0
Environment:
AZP_AGENT_NAME: CONTAINER_JAVA_AGENT
AZP_URL: https://dev.azure.com/mycompany
AZP_POOL: Default
AZP_TOKEN: <set to the key 'pat' in secret 'pat'> Optional: false
Mounts:
/var/run/docker.sock from dockersock (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-2msgf (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
dockersock:
Type: HostPath (bare host directory volume)
Path: /var/run/docker.sock
HostPathType:
default-token-2msgf:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-2msgf
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
el error que recibo es
ERRO[0000] 'overlay' is not supported over overlayfs
error creating libpod runtime: 'overlay' is not supported over overlayfs: backing file system is unsupported for this graph driver
¿Alguna idea sobre cómo puedo resolver este problema?
PD: También probé el primer comentario en elventana acoplable en ventana acoplableproblema, lo que significa que intenté montar el /bin/docker que introdujo diferentes problemas
Respuesta1
Para ejecutar Docker en Docker, el /var/lib/docker
sistema de archivos no puede ser el sistema de archivos contenedor que está construido con overlayfs. En su lugar, debe montarlo desde un volumen externo a un sistema de archivos compatible en el host externo, ya sea xfs
con ftype=1
o ext4
. Esto está documentado enhttps://docs.docker.com/storage/storagedriver/#supported-backing-filesystems
Puede usar un volumen con nombre en el host para esto, ya que /var/lib/docker en el sistema de archivos del host estará en un FS compatible. Por ejemplo, mi propia CLI DinD se ve así:
docker run -d --rm --privileged \
-v "dind-${port}:/var/lib/docker" \
-v "dind-${port}-ccerts:/certs/client" -e DOCKER_TLS_CERTDIR=/certs \
-v "$HOME:$HOME" \
--name "dind-${port}" -p "127.0.0.1:${port}:2376" \
"docker:${opt_t}-dind"
Tenga en cuenta que el primer montaje de volumen es algo así como dind-1234:/var/lib/docker
lo que creó un volumen con nombre para este directorio en el contenedor.