Skip to content

Filesystem actions in containers fail with Too many levels of symbolic links

Article Number: 000020104

Environment

Docker container or Kubernetes Pod with a volume defined that is mounted on the host with autofs, typically backed by NFS

Situation

bash: cd: /data: Too many levels of symbolic links

Cause

As the share that backs the autofs volume isn't mounted until the directory specified is accessed, it is typically not mounted when a container is run.

With the default Docker bind-mount propagation of rprivate, containers do not receive mount changes for volumes from the host.

Resolution

Docker

Mount the volume in question with the flag slave, rslave, shared, or rshared to ensure that mount changes are propagated to the container. Example: docker run -d -v /path/to/autofs:/data:shared ubuntu

See the links at the bottom of this article for info on what each of these flags does

Kubernetes

Define mountPropagation for the volume in question as either HostToContainer (same as Docker's rslave) or Bidirectional (same as Docker's rshared):

kind: Pod
apiVersion: v1
metadata:
  name: test-app
spec:
  containers:
    - name: test
      image: busybox
      volumeMounts:
      - mountPath: "/data"
        name: test-app-vol
        mountPropagation: HostToContainer
  volumes:
    - name: test-app-vol
      hostPath:
        path: /data