Azure 관리형 kubernetes 클러스터(aks) 내부의 docker 시나리오에서 docker를 실행하려고 합니다.
docker unix 소켓을 포드에 마운트했습니다. 내 의도는 aks Pod를 Azure DevOps 에이전트로 사용하여 내 프로젝트를 빌드하고 테스트하는 것입니다. 이를 위해서는 docker에서 실행되는 데이터베이스와 wiremock이 필요합니다. 즉, docker 네트워크가 생성됩니다.
아래에서 현재 구성을 볼 수 있습니다.
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>
내가받는 오류는
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
이 문제를 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?
추신 : 나는 또한 첫 번째 댓글을 시도했습니다.도커 속의 도커문제는 다른 문제가 발생한 /bin/docker를 마운트하려고 시도했음을 의미합니다.
답변1
docker에서 docker를 실행하려면 /var/lib/docker
파일 시스템이 overlayfs로 빌드된 컨테이너 파일 시스템일 수 없습니다. 대신 또는 를 xfs
사용하여 외부 볼륨에서 외부 호스트의 지원되는 파일 시스템으로 마운트해야 합니다 . 이것은 다음에 문서화되어 있습니다.ftype=1
ext4
https://docs.docker.com/storage/storagedriver/#supported-backing-filesystems
호스트 파일 시스템의 /var/lib/docker가 지원되는 FS에 있으므로 이를 위해 호스트에서 명명된 볼륨을 사용할 수 있습니다. 예를 들어 내 DinD CLI는 다음과 같습니다.
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"
dind-1234:/var/lib/docker
첫 번째 볼륨 마운트는 컨테이너에서 이 디렉터리에 대한 명명된 볼륨을 생성하는 것과 비슷합니다 .