Moby: El controlador devicemapper no pudo eliminar el sistema de archivos raíz. El dispositivo está ocupado

Creado en 14 oct. 2016  ·  153Comentarios  ·  Fuente: moby/moby

Descripción
No se pueden eliminar contenedores, Docker informa Driver devicemapper failed to remove root filesystem. Device is busy . Esto deja los contenedores en el estado Dead .

Pasos para reproducir el problema:

  1. docker rm container_id

Describe los resultados que recibiste:
Aparece un mensaje de error: Error response from daemon: Driver devicemapper failed to remove root filesystem ce2ea989895b7e073b9c3103a7312f32e70b5ad01d808b42f16655ffcb06c535: Device is Busy

Describe los resultados que esperabas:
El recipiente debe retirarse.

Información adicional que considere importante (por ejemplo, el problema ocurre solo ocasionalmente):
Esto comenzó a ocurrir después de la actualización de 1.11.2 a 1.12.2 y ocurre ocasionalmente (10% de las eliminaciones)

Salida de docker version :

Client:
 Version:      1.12.2
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   bb80604
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.2
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   bb80604
 Built:
 OS/Arch:      linux/amd64

Salida de docker info :

Containers: 83
 Running: 72
 Paused: 0
 Stopped: 11
Images: 49
Server Version: 1.12.2
Storage Driver: devicemapper
 Pool Name: data-docker_thin
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: ext4
 Data file:
 Metadata file:
 Data Space Used: 33.66 GB
 Data Space Total: 86.72 GB
 Data Space Available: 53.06 GB
 Metadata Space Used: 37.3 MB
 Metadata Space Total: 268.4 MB
 Metadata Space Available: 231.1 MB
 Thin Pool Minimum Free Space: 8.672 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: journald
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null overlay host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.10.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.305 GiB
Name: us-2.c.evennode-1234.internal
ID: HVU4:BVZ3:QYUQ:IJ6F:Q2FP:Z4T3:MBKH:I4KC:XFIF:W5DV:4HZW:45NJ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 127.0.0.0/8

Detalles adicionales del entorno (AWS, VirtualBox, físico, etc.):
Todos los entornos en los que ejecutamos servidores: AWS, gcloud, físico, etc.

arestoragdevicemapper statuneeds-attention versio1.12

Comentario más útil

Acabo de tener el mismo problema en:

  • docker: Docker versión 17.03.1-ce, compilación c6d412e
  • sistema operativo: Red Hat Enterprise Linux Server versión 7.3 (Maipo)
  • kernel: 3.10.0-514.6.1.el7.x86_64
  • ntpd: 4.2.6p5

Hacer systemctl restart ntpd solucionó el problema al instante.

Todos 153 comentarios

¿Está pasando esto con algún contenedor? ¿Qué se está ejecutando en el contenedor y qué opciones utiliza para iniciar el contenedor? (por ejemplo, ¿está utilizando directorios montados en enlaces, está utilizando docker exec para iniciar procesos adicionales en el contenedor?)

Ejecutamos todos los contenedores prácticamente de la misma manera y sucede aleatoriamente en cualquiera de ellos.
No usamos docker exec , no enlazamos ni montamos ningún directorio.
Aquí está la configuración de uno de los contenedores muertos:

[
    {
        "Id": "ce2ea989895b7e073b9c3103a7312f32e70b5ad01d808b42f16655ffcb06c535",
        "Created": "2016-10-13T09:14:52.069916456Z",
        "Path": "/run.sh",
        "Args": [],
        "State": {
            "Status": "dead",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": true,
            "Pid": 0,
            "ExitCode": 143,
            "Error": "",
            "StartedAt": "2016-10-13T18:05:50.839079884Z",
            "FinishedAt": "2016-10-14T01:49:22.133922284Z"
        },
        "Image": "sha256:df8....4f4",
        "ResolvConfPath": "/var/lib/docker/containers/ce2ea989895b7e073b9c3103a7312f32e70b5ad01d808b42f16655ffcb06c535/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/ce2ea989895b7e073b9c3103a7312f32e70b5ad01d808b42f16655ffcb06c535/hostname",
        "HostsPath": "/var/lib/docker/containers/ce2ea989895b7e073b9c3103a7312f32e70b5ad01d808b42f16655ffcb06c535/hosts",
        "LogPath": "",
        "Name": "/d9a....43",
        "RestartCount": 0,
        "Driver": "devicemapper",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "fluentd",
                "Config": {
                    "fluentd-address": "127.0.0.1:24224",
                    "fluentd-async-connect": "true",
                    "labels": "app_id",
                    "tag": "docker.{{if (.ExtraAttributes nil).app_id}}{{(.ExtraAttributes nil).app_id}}{{else}}{{.Name}}{{end}}"
                }
            },
            "NetworkMode": "default",
            "PortBindings": {
                "3000/tcp": [
                    {
                        "HostIp": "127.0.0.2",
                        "HostPort": ""
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": [
                "mongodb:10.240.0.2"
            ],
            "GroupAdd": null,
            "IpcMode": "",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "CgroupParent": "mygroup/d9...43",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": -1,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Name": "devicemapper",
            "Data": {
                "DeviceId": "29459",
                "DeviceName": "docker-8:1-34634049-8e884a263c75cfb042ac02136461c8e8258cf693f0e4992991d5803e951b3dbb",
                "DeviceSize": "107374182400"
            }
        },
        "Mounts": [],
        "Config": {
            "Hostname": "ce2ea989895b",
            "Domainname": "",
            "User": "app",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3000/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PORT=3000",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/run.sh"
            ],
            "Image": "eu.gcr.io/reg/d9...43:latest",
            "Volumes": null,
            "WorkingDir": "/data/app",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "app_id": "d9...43"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "65632062399b8f9f011fdebcd044432c45f068b74d24c48818912a21e8036c98",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": null,
            "SandboxKey": "/var/run/docker/netns/65632062399b",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "59d8aa11b92aaa8ad9da7f010e8689c158cad7d80ec4b9e4e4688778c49149e0",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": ""
                }
            }
        }
    }
]

Acabo de notar que esto sucede solo en servidores con este sistema Backing Filesystem: ext4 archivos
El problema no parece ocurrir en servidores que ejecutan xfs como sistema de archivos de respaldo.

@ceecko gracias, eso es interesante

@rhvgoyal, ¿ es este un problema conocido de su lado?

Esto nos golpea duro en la producción: / ¿Alguna sugerencia de cómo quitar los contenedores muertos?

@thaJeztah Es extraño que esto suceda solo con ext4 y no con xfs. No tengo conocimiento de tal cosa.

En general, las personas han informado que el dispositivo está ocupado y puede haber muchas razones para ello.

@ceeko, en primer lugar, asegúrese de que el demonio de la

@rhvgoyal El MountFlags=slave parece resolver el problema hasta ahora. Los contenedores creados antes del cambio siguen siendo un problema, pero los nuevos contenedores no parecen desencadenar el error hasta ahora. Me pondré en contacto en caso de que algo cambie.

Por cierto, puede valer la pena actualizar los documentos del controlador de almacenamiento para recomendar esto como una mejor práctica en producción, ya que no pude encontrar ninguna referencia.

Gracias por tu ayuda.

Esto se cambió hace un tiempo; https://github.com/docker/docker/commit/2aee081cad72352f8b0c37ba0414ebc925b022e8#diff -ff907ce70a8c7e795bde1de91be6fa68 (https://github.com/docker/docker/pull/22806), según la discusión, esto puede ser un problema no disponible; https://github.com/docker/docker/pull/22806#issuecomment -220043409

¿Deberíamos volver a cambiar el valor predeterminado? @rhvgoyal

@thaJeztah Creo que podría ser una buena idea volver a cambiar el valor predeterminado a MountFlags = slave. Lo hemos hecho.

Idealmente, las funciones de eliminación diferida y eliminación diferida deberían haberse ocupado de esto y no había necesidad de usar MountFlags = slave. Pero la eliminación diferida por sí sola no es suficiente. A los núcleos antiguos les falta una característica en la que se puede eliminar un directorio de un espacio de nombres de montaje incluso si está montado en un espacio de nombres de montaje diferente. Y esa es una de las razones por las que la extracción de contenedores puede fallar.

Entonces, hasta que los núcleos antiguos ofrezcan esa característica, podría ser una buena idea ejecutar el demonio de la ventana acoplable en un espacio de nombres de montaje esclavo.

@rhvgoyal, los errores comenzaron a aparecer nuevamente incluso con MountFlags=slave . Intentaremos la eliminación diferida y la eliminación y nos comunicaremos con usted.

También hemos experimentado el mismo error en xfs .
Aquí está la información de la ventana acoplable

Containers: 52
 Running: 52
 Paused: 0
 Stopped: 0
Images: 9
Server Version: 1.12.2
Storage Driver: devicemapper
 Pool Name: data-docker_thin
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file:
 Metadata file:
 Data Space Used: 13 GB
 Data Space Total: 107.1 GB
 Data Space Available: 94.07 GB
 Metadata Space Used: 19.19 MB
 Metadata Space Total: 268.4 MB
 Metadata Space Available: 249.2 MB
 Thin Pool Minimum Free Space: 10.71 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: journald
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host overlay bridge null
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.10.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.389 GiB
Name: ip-172-31-25-29.eu-west-1.compute.internal
ID: ZUTN:S7TL:6JRZ:HG52:LDLZ:VR5Q:RWVV:IP7E:HOQ4:R55X:Z7AI:P63R
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
 127.0.0.0/8

Confirmo que el error todavía ocurre en 1.12.2 incluso con MountFlags=slave y dm.use_deferred_deletion=true y dm.use_deferred_removal=true aunque con menos frecuencia que antes.

Aquí hay más información de los registros con respecto a 1 contenedor que no se pudo eliminar:

libcontainerd: container 4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543 restart canceled
error locating sandbox id c9272d4830ba45e03efda777a14a4b5f7f94138997952f2ec1ba1a43b2c4e1c5: sandbox c9272d4830ba45e03efda777a14a4b5f7f94138997952f2ec1ba1a43b2c4e1c5 not found
failed to cleanup ipc mounts:\nfailed to umount /var/lib/docker/containers/4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543/shm: invalid argument
devmapper: Error unmounting device ed06c57080b8a8f25dc83d4afabaccb26d72009dad23a8e87310b873c226b905: invalid argument
Error unmounting container 4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543: invalid argument
Handler for DELETE /containers/4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543 returned error: Unable to remove filesystem for 4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543: remove /var/lib/docker/containers/4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543/shm: device or resource busy

El siguiente mensaje sugiere que la eliminación del directorio falló.

remove /var/lib/docker/containers/4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543/shm: device or resource busy

Y en el kernel más antiguo, puede fallar porque el directorio está montado en algún otro espacio de nombres de montaje. Si desactiva la función deferred deletion , este mensaje dejará de aparecer. Pero se convertirá en algún otro mensaje de error.

El núcleo del problema aquí es que el contenedor todavía se está ejecutando o algunos de sus puntos de montaje se han filtrado a otros espacios de nombres de montaje. Y si podemos averiguar en qué espacio de nombres de montaje se ha filtrado y cómo llegó allí, podríamos intentar arreglarlo.

Una vez que se encuentre con este problema, puede intentar hacer find /proc/*/mounts | xargs grep "4d9bbd9b4da95f0ba1947055fa263a059ede9397bcf1456e6795f16e1a7f0543"

Y luego vea qué pids tienen montajes relacionados con contenedores que se filtraron en ellos. Y eso podría dar una idea.

Probé cuatro contenedores que están todos muertos y no se pueden quitar debido a que el dispositivo está ocupado y no obtuve nada: /

# find /proc/*/mounts | xargs grep -E "b3070ef60def|62777ad2994f|923a6d20506d|f3e079a9721c"
grep: /proc/9659/mounts: No such file or directory

Ahora recibo un mensaje de error ligeramente diferente:

# docker rm b3070ef60def
Error response from daemon: Driver devicemapper failed to remove root filesystem b3070ef60deffc0e496631ed6e058c4569d6233bb6947b27072a70c663d9e579: remove /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd: device or resource busy

La misma cosa. este directorio no se puede eliminar porque está montado en algún otro espacio de nombres de montaje. Intenta buscar en / proc // mounts y grep para este id 527ae5 y ver qué pid está viendo este punto de montaje. Necesitamos averiguar que en su configuración por qué el punto de montaje rootfs del contenedor se está filtrando a otro espacio de nombres de montaje.

Aquí vamos:

# find /proc/*/mounts | xargs grep -E "527ae5"
grep: /proc/10080/mounts: No such file or directory
/proc/15890/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
/proc/23584/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
/proc/31591/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
/proc/4194/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
/proc/4700/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
/proc/4701/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
/proc/8858/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
/proc/8859/mounts:/dev/mapper/docker-253:1-1050933-527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd /var/lib/docker/devicemapper/mnt/527ae5985b1b730a05a667d147ce15abcbfb950a334aea4b673a413b6b21c4dd xfs rw,seclabel,relatime,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota 0 0
nginx     4194  0.0  0.0  55592 10520 ?        S    11:55   0:06 nginx: worker process is shutting down
nginx     4700  2.3  0.0  55804 10792 ?        S    11:58   3:52 nginx: worker process is shutting down
nginx     4701  1.8  0.0  55800 10784 ?        S    11:58   3:04 nginx: worker process is shutting down
nginx     8858  2.4  0.0  55560 10720 ?        S    14:05   0:59 nginx: worker process
nginx     8859  3.1  0.0  55560 10700 ?        S    14:05   1:15 nginx: worker process
root     15890  0.0  0.0  55004  9524 ?        Ss   Oct29   0:05 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx    23584  0.0  0.0  55576 10452 ?        S    09:17   0:00 nginx: worker process is shutting down
nginx    31591  0.9  0.0  63448 18820 ?        S    09:46   2:53 nginx: worker process is shutting down

¿A qué procesos se asignan estos pids? Prueba cat /proc/<pid>/comm o ps -eaf | grep <pid>

Estos son todos los procesos de trabajo de nginx que se cierran después de una recarga de configuración (ver el comentario editado arriba). Me pregunto por qué bloquean los soportes ya que los contenedores no unen ningún volumen.

Entonces, ¿el proceso nginx se está ejecutando en otro contenedor? ¿O se está ejecutando en el host?

¿Puedes hacer lo siguiente?

  • ls -l /proc/<docker-daemon-pid>/ns/mnt
  • ls -l /proc/<nginx-pid>/ns/mnt
  • Ejecute un shell bash en el host y ejecute ls -l /proc/$$/ns/mnt

Y pegue la salida. aquí.

nginx se ejecuta en el host.

docker-pid

# ls -l /proc/13665/ns/mnt
lrwxrwxrwx. 1 root root 0 Oct 31 15:01 /proc/13665/ns/mnt -> mnt:[4026531840]

nginx-pid

# ls -l /proc/15890/ns/mnt
lrwxrwxrwx. 1 root root 0 Oct 31 15:01 /proc/15890/ns/mnt -> mnt:[4026533289]
ls -l /proc/$$/ns/mnt
lrwxrwxrwx. 1 root root 0 Oct 31 15:02 /proc/10063/ns/mnt -> mnt:[4026531840]

Su docker-pid y el host parecen estar compartiendo el mismo espacio de nombres de montaje. Y eso significa que el demonio de la ventana acoplable se está ejecutando en el espacio de nombres de montaje del host. Y eso probablemente significa que nginx comenzó en algún momento después del inicio del contenedor y parece estar ejecutándose en su propio espacio de nombres de montaje. Y en ese momento, los puntos de montaje se filtraron en el espacio de nombres de montaje de nginx y eso impidió la eliminación del contenedor.

Asegúrese de que MountFlags = slave funcione para usted. Una vez que esté funcionando, / proc // ns / mnt dará una salida diferente para el demonio docker y el shell bash que se ejecutan en el espacio de nombres de montaje del host.

Tienes razón. Este anfitrión aún no tiene configurado el MountFlags=slave .
Sin embargo, un anfitrión diferente lo hizo y todavía había contenedores muertos. Sin embargo, ahora los eliminé todos manualmente, pero se crearon con MountFlags=slave .

Esperaré hasta que la situación se repita y publicaré una actualización aquí. Gracias.

Ahora la situación es la siguiente: usamos MountFlags=slave y eliminación y eliminación diferidas y, en algún momento, la API remota arroja un error de que el dispositivo está ocupado y no se puede eliminar. Sin embargo, cuando se llama a docker rm container justo después del error, elimina el contenedor sin problemas.

El problema ha vuelto a aparecer.

Dockerd

# ll /proc/16441/ns/mnt
lrwxrwxrwx. 1 root root 0 Nov  4 23:05 /proc/16441/ns/mnt -> mnt:[4026534781]

nginx

# ll /proc/15890/ns/mnt
lrwxrwxrwx. 1 root root 0 Oct 31 15:01 /proc/15890/ns/mnt -> mnt:[4026533289]
# ll /proc/$$/ns/mnt
lrwxrwxrwx. 1 root root 0 Nov  4 23:06 /proc/22029/ns/mnt -> mnt:[4026531840]
# find /proc/*/mounts | xargs grep -E "a2388cf8d19a"
/proc/11528/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/12918/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/1335/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/14853/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/1821/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/22241/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/22406/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/22618/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
grep: /proc/22768/mounts: No such file or directory
/proc/22771/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/23601/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/24108/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/24405/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/24614/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/24817/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/25116/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/25277/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/25549/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/25779/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/26036/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/26211/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/26369/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/26638/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/26926/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/27142/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/27301/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/27438/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/27622/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/27770/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/27929/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/28146/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/28309/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/28446/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/28634/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/28805/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/28961/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/29097/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/2909/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/29260/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/29399/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/29540/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/29653/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/29675/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/29831/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/30040/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/30156/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/30326/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/30500/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/30619/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/30772/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/30916/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/31077/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/31252/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/31515/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/31839/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/32036/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/32137/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/3470/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/5628/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/5835/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
/proc/8076/mounts:shm /var/lib/docker/containers/a2388cf8d19a431f47e9df533a853809ceaf819581c23c438fefe470d2bf8f03/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0

Procesos del comando anterior

  PID TTY      STAT   TIME COMMAND
 1335 ?        Sl     0:00 docker-containerd-shim 9a678ecbd9334230d61a0e305cbbb50e3e5207e283decc2d570d787d98f8d930 /var/run/docker/libcontainerd/9a678ecbd9334230d61a0e305cbbb50e3e5207e283decc2d570d787d98f8d930 docker-runc
 1821 ?        Sl     0:00 docker-containerd-shim 97f0a040c0ebe15d7527a54481d8946e87f1ec0681466108fd8356789de0232b /var/run/docker/libcontainerd/97f0a040c0ebe15d7527a54481d8946e87f1ec0681466108fd8356789de0232b docker-runc
 2909 ?        Sl     0:00 docker-containerd-shim ef2e6a22e5ea5f221409ff8888ac976bd9b23633fab13b6968253104424a781f /var/run/docker/libcontainerd/ef2e6a22e5ea5f221409ff8888ac976bd9b23633fab13b6968253104424a781f docker-runc
 3470 ?        Sl     0:00 docker-containerd-shim 24b6918ce273a82100a1c6bae711554340bc60ff965527456130bd2fabf0ca6f /var/run/docker/libcontainerd/24b6918ce273a82100a1c6bae711554340bc60ff965527456130bd2fabf0ca6f docker-runc
 5628 ?        Sl     0:00 docker-containerd-shim 9561cbe2f0133119e2749d09e5db3f6473e77830a7981c1171849fe403d73973 /var/run/docker/libcontainerd/9561cbe2f0133119e2749d09e5db3f6473e77830a7981c1171849fe403d73973 docker-runc
 5835 ?        Sl     0:00 docker-containerd-shim a5afb5ab32c2396cdddd24390f94b01f597850012ad9731d6d47db9708567b24 /var/run/docker/libcontainerd/a5afb5ab32c2396cdddd24390f94b01f597850012ad9731d6d47db9708567b24 docker-runc
 8076 ?        Sl     0:00 docker-containerd-shim 20cca8e6ec26364aa4eb9733172c7168052947d5e204d302034b2d14fd659302 /var/run/docker/libcontainerd/20cca8e6ec26364aa4eb9733172c7168052947d5e204d302034b2d14fd659302 docker-runc
11528 ?        Sl     0:00 docker-containerd-shim f7584de190086d41da71235a6ce2516cbccb8ac0fff9f71b03d405af9478660f /var/run/docker/libcontainerd/f7584de190086d41da71235a6ce2516cbccb8ac0fff9f71b03d405af9478660f docker-runc
12918 ?        Sl     0:00 docker-containerd-shim 9ada39a06c5e1351df30dde993adcd048f8bd7984af2b412b8f3339f037c8847 /var/run/docker/libcontainerd/9ada39a06c5e1351df30dde993adcd048f8bd7984af2b412b8f3339f037c8847 docker-runc
14853 ?        Sl     0:00 docker-containerd-shim 4d05a794e0be9e710b804f5a7df22e2dd268083b3d7d957daae6f017c1c8fb67 /var/run/docker/libcontainerd/4d05a794e0be9e710b804f5a7df22e2dd268083b3d7d957daae6f017c1c8fb67 docker-runc
22241 ?        Sl     0:00 docker-containerd-shim ce81b6b51fcbf1163491381c790fc944b54adf3333f82d75281bc746b81ccd47 /var/run/docker/libcontainerd/ce81b6b51fcbf1163491381c790fc944b54adf3333f82d75281bc746b81ccd47 docker-runc
22406 ?        Sl     0:00 docker-containerd-shim 519e5531104278559d95f351e2212b04b06f44cbd1e05336cd306b9a958c8874 /var/run/docker/libcontainerd/519e5531104278559d95f351e2212b04b06f44cbd1e05336cd306b9a958c8874 docker-runc
22618 ?        Sl     0:00 docker-containerd-shim 869b356e7838ef3c0200864c58a89a22c812574a60da535eb2107a5da1d07a65 /var/run/docker/libcontainerd/869b356e7838ef3c0200864c58a89a22c812574a60da535eb2107a5da1d07a65 docker-runc
22771 ?        Sl     0:00 docker-containerd-shim 63f0816e72d4be4ed79fe2c31794876b1b3ab7a300ca69497a8bddbd8cf8953f /var/run/docker/libcontainerd/63f0816e72d4be4ed79fe2c31794876b1b3ab7a300ca69497a8bddbd8cf8953f docker-runc
23601 ?        Sl     0:00 docker-containerd-shim 9943b9930cb4803666caf5499dfb0753c36193efe0285f2ae697be63c6122003 /var/run/docker/libcontainerd/9943b9930cb4803666caf5499dfb0753c36193efe0285f2ae697be63c6122003 docker-runc
24108 ?        Sl     0:00 docker-containerd-shim 21af7db24bbd1679f48ae3cf0d022535c208c63dc42a274dd54e3cfcb90b9737 /var/run/docker/libcontainerd/21af7db24bbd1679f48ae3cf0d022535c208c63dc42a274dd54e3cfcb90b9737 docker-runc
24405 ?        Sl     0:00 docker-containerd-shim 0dccc5141be2367de2601d83020f7f4c27762d4c8e986b4b100a4bce12fc2f5a /var/run/docker/libcontainerd/0dccc5141be2367de2601d83020f7f4c27762d4c8e986b4b100a4bce12fc2f5a docker-runc
24614 ?        Sl     0:00 docker-containerd-shim e1023b528f8b2a1889c0fc360c0d1738a15be0bd53e0722920a9abb5ecc2c538 /var/run/docker/libcontainerd/e1023b528f8b2a1889c0fc360c0d1738a15be0bd53e0722920a9abb5ecc2c538 docker-runc
24817 ?        Sl     0:00 docker-containerd-shim 2106fe528147306e768b01b03ef7f10c53536ad4aaee6a628608c9c5bbf9494c /var/run/docker/libcontainerd/2106fe528147306e768b01b03ef7f10c53536ad4aaee6a628608c9c5bbf9494c docker-runc
25116 ?        Sl     0:00 docker-containerd-shim 1b9623bf34b5030d47faf21dee6462478d6d346327af0b4c96e6ccae4c880368 /var/run/docker/libcontainerd/1b9623bf34b5030d47faf21dee6462478d6d346327af0b4c96e6ccae4c880368 docker-runc
25277 ?        Sl     0:00 docker-containerd-shim 6662486b063f530a446602eed47811443eb737151b404c0d253bf54df9e6b93f /var/run/docker/libcontainerd/6662486b063f530a446602eed47811443eb737151b404c0d253bf54df9e6b93f docker-runc
25549 ?        Sl     0:05 docker-containerd-shim f6e3e14362455f38d6abfdeb106f280151ee3f12dc9d2808c774dd3d2cd3e828 /var/run/docker/libcontainerd/f6e3e14362455f38d6abfdeb106f280151ee3f12dc9d2808c774dd3d2cd3e828 docker-runc
25779 ?        Sl     0:00 docker-containerd-shim 144fded452cd9a0bdbcdf72890aa400eadb65e434038373e2ddfc1f4e28a1279 /var/run/docker/libcontainerd/144fded452cd9a0bdbcdf72890aa400eadb65e434038373e2ddfc1f4e28a1279 docker-runc
26036 ?        Sl     0:00 docker-containerd-shim e076f6cfc4fcd04a9a4fa6aecf37fe244d6d84e200380b6ef4a1e0a79575e952 /var/run/docker/libcontainerd/e076f6cfc4fcd04a9a4fa6aecf37fe244d6d84e200380b6ef4a1e0a79575e952 docker-runc
26211 ?        Sl     0:00 docker-containerd-shim 65bea267b22c9a6efe58ea9d7339986b01e7f67c095aa1451768de5114a5b027 /var/run/docker/libcontainerd/65bea267b22c9a6efe58ea9d7339986b01e7f67c095aa1451768de5114a5b027 docker-runc
26369 ?        Sl     0:00 docker-containerd-shim 390bc07f95b460220bda115aad2f247b33f50c81f7bd2b3d1a20e1696b95511b /var/run/docker/libcontainerd/390bc07f95b460220bda115aad2f247b33f50c81f7bd2b3d1a20e1696b95511b docker-runc
26638 ?        Sl     0:00 docker-containerd-shim b6d86f96d33260673b2e072419f08578716582578015a30e4f23d4e481a55809 /var/run/docker/libcontainerd/b6d86f96d33260673b2e072419f08578716582578015a30e4f23d4e481a55809 docker-runc
26926 ?        Sl     0:00 docker-containerd-shim 337ec28dd75f2f5bc2cfa813504d35a8c148777c7f246f8af5d792c36f3453ae /var/run/docker/libcontainerd/337ec28dd75f2f5bc2cfa813504d35a8c148777c7f246f8af5d792c36f3453ae docker-runc
27142 ?        Sl     0:00 docker-containerd-shim ba2216d6b46d7b57493734b093bc153823fb80a48ef4b91d0d1c660ee9adc519 /var/run/docker/libcontainerd/ba2216d6b46d7b57493734b093bc153823fb80a48ef4b91d0d1c660ee9adc519 docker-runc
27301 ?        Sl     0:00 docker-containerd-shim 520f66841a97b2545784b29ea3bc7a22a58d97987c404e1d99314da75307d279 /var/run/docker/libcontainerd/520f66841a97b2545784b29ea3bc7a22a58d97987c404e1d99314da75307d279 docker-runc
27438 ?        Sl     0:00 docker-containerd-shim 0908466da160ed739d74d675e1a6e04d85da0caa2216c739c0e218e75219dc3e /var/run/docker/libcontainerd/0908466da160ed739d74d675e1a6e04d85da0caa2216c739c0e218e75219dc3e docker-runc
27622 ?        Sl     0:00 docker-containerd-shim e627ef7439b405376ac4cf58702241406e3c8b9fbe76694a9593c6f96b4e5925 /var/run/docker/libcontainerd/e627ef7439b405376ac4cf58702241406e3c8b9fbe76694a9593c6f96b4e5925 docker-runc
27770 ?        Sl     0:00 docker-containerd-shim 0b6275f8f1d8277ac39c723825e7b830e0cf852c44696074a279227402753827 /var/run/docker/libcontainerd/0b6275f8f1d8277ac39c723825e7b830e0cf852c44696074a279227402753827 docker-runc
27929 ?        Sl     0:00 docker-containerd-shim fcf647fbe0fe024cc4c352a2395d8d315d647aeda7f75a2f9d42826eca3dee58 /var/run/docker/libcontainerd/fcf647fbe0fe024cc4c352a2395d8d315d647aeda7f75a2f9d42826eca3dee58 docker-runc
28146 ?        Sl     0:00 docker-containerd-shim 19f020044a3e600aa554a7ab00264155206e8791a7002f5616b397745b2c6405 /var/run/docker/libcontainerd/19f020044a3e600aa554a7ab00264155206e8791a7002f5616b397745b2c6405 docker-runc
28309 ?        Sl     0:00 docker-containerd-shim 3f6a5b9136df8169d3d1e1eb104bda6f4baf32ca5a2bc35ddaeea4a3a0bf774a /var/run/docker/libcontainerd/3f6a5b9136df8169d3d1e1eb104bda6f4baf32ca5a2bc35ddaeea4a3a0bf774a docker-runc
28446 ?        Sl     0:00 docker-containerd-shim f1ede5511531d05ab9eb86612ed239446a4b3acefe273ee65474b4a4c1d462e2 /var/run/docker/libcontainerd/f1ede5511531d05ab9eb86612ed239446a4b3acefe273ee65474b4a4c1d462e2 docker-runc
28634 ?        Sl     0:00 docker-containerd-shim 7485d577ec2e707e1151a73132ceba7db5c0509c1ffbaf750515e0228b2ffa33 /var/run/docker/libcontainerd/7485d577ec2e707e1151a73132ceba7db5c0509c1ffbaf750515e0228b2ffa33 docker-runc
28805 ?        Sl     0:00 docker-containerd-shim e5afd9eccb217e16f0494f71504d167ace8377498ce6141e2eaf96de71c74233 /var/run/docker/libcontainerd/e5afd9eccb217e16f0494f71504d167ace8377498ce6141e2eaf96de71c74233 docker-runc
28961 ?        Sl     0:00 docker-containerd-shim bd62214b90fab46a92893a15e06d5e2744659d61d422776ce9b395e56bb0e774 /var/run/docker/libcontainerd/bd62214b90fab46a92893a15e06d5e2744659d61d422776ce9b395e56bb0e774 docker-runc
29097 ?        Sl     0:00 docker-containerd-shim 81db13c46756851006d2f0b0393e37590bac228a3d958a12cc9f6c86d5992253 /var/run/docker/libcontainerd/81db13c46756851006d2f0b0393e37590bac228a3d958a12cc9f6c86d5992253 docker-runc
29260 ?        Sl     0:00 docker-containerd-shim 188d2c3a98cc1d65a88daeb17dacca7fca978831a9292b7225e60f7443096114 /var/run/docker/libcontainerd/188d2c3a98cc1d65a88daeb17dacca7fca978831a9292b7225e60f7443096114 docker-runc
29399 ?        Sl     0:00 docker-containerd-shim 1dc12f09be24722a18057072ac5a0b2b74324e13de051f213e1966c1d31e1348 /var/run/docker/libcontainerd/1dc12f09be24722a18057072ac5a0b2b74324e13de051f213e1966c1d31e1348 docker-runc
29540 ?        Sl     0:00 docker-containerd-shim 0c425984d9c544683de0644a77849807a9ee31db99043e3e2bace9d2e9cfdb63 /var/run/docker/libcontainerd/0c425984d9c544683de0644a77849807a9ee31db99043e3e2bace9d2e9cfdb63 docker-runc
29653 ?        Sl     0:00 docker-containerd-shim b1805c289749d432a0680aa7f082703175b647005d240d594124a64e69f5de28 /var/run/docker/libcontainerd/b1805c289749d432a0680aa7f082703175b647005d240d594124a64e69f5de28 docker-runc
29675 ?        Sl     0:36 docker-containerd-shim 6a9751b28d88c61d77859b296a8bde21c6c0c8379089ae7886b7332805bb8463 /var/run/docker/libcontainerd/6a9751b28d88c61d77859b296a8bde21c6c0c8379089ae7886b7332805bb8463 docker-runc
29831 ?        Sl     0:00 docker-containerd-shim 09796b77ef046f29439ce6cab66797314b27e9f77137017773f3b90637107433 /var/run/docker/libcontainerd/09796b77ef046f29439ce6cab66797314b27e9f77137017773f3b90637107433 docker-runc
30040 ?        Sl     0:20 docker-containerd-shim a2e26ba3d11f876b38e88cc6501fae51e7c66c7c2d40982eec72f23301f82772 /var/run/docker/libcontainerd/a2e26ba3d11f876b38e88cc6501fae51e7c66c7c2d40982eec72f23301f82772 docker-runc
30156 ?        Sl     0:00 docker-containerd-shim 35d157883a8c586e5086e940d1a5f2220e2731ca19dd7655c9ee3150321bac66 /var/run/docker/libcontainerd/35d157883a8c586e5086e940d1a5f2220e2731ca19dd7655c9ee3150321bac66 docker-runc
30326 ?        Sl     0:00 docker-containerd-shim 5af072f8c0b1af434139104ad884706079e2c46bf951200eaf9531614e2dc92a /var/run/docker/libcontainerd/5af072f8c0b1af434139104ad884706079e2c46bf951200eaf9531614e2dc92a docker-runc
30500 ?        Sl     0:00 docker-containerd-shim ba71715ba985511a617a7377b3b0d66f0b75af8323c17544c54f75da1a267a1f /var/run/docker/libcontainerd/ba71715ba985511a617a7377b3b0d66f0b75af8323c17544c54f75da1a267a1f docker-runc
30619 ?        Sl     0:08 docker-containerd-shim f42fdd0d4d971442969637f9e1db4c1e45270d86f950e614d8721d767872930a /var/run/docker/libcontainerd/f42fdd0d4d971442969637f9e1db4c1e45270d86f950e614d8721d767872930a docker-runc
30772 ?        Sl     0:00 docker-containerd-shim 8a745ab948d51e41b80992e2246058082f274d30d9f68f46dd3fef2e441afc01 /var/run/docker/libcontainerd/8a745ab948d51e41b80992e2246058082f274d30d9f68f46dd3fef2e441afc01 docker-runc
30916 ?        Sl     0:00 docker-containerd-shim 238f635c6adac1786ee46a99f0c20f36544cc5ebd644fc0c0908d38e9177eb1e /var/run/docker/libcontainerd/238f635c6adac1786ee46a99f0c20f36544cc5ebd644fc0c0908d38e9177eb1e docker-runc
31077 ?        Sl     0:00 docker-containerd-shim 9c208554dcb64c6568f026455a33d64830995c0411c6876fbea66355bab2cb5f /var/run/docker/libcontainerd/9c208554dcb64c6568f026455a33d64830995c0411c6876fbea66355bab2cb5f docker-runc
31252 ?        Sl     0:00 docker-containerd-shim afc0a4c93a27d9451875f8d917b24c64f59ba3b1992ff52f9ac3f93623440a54 /var/run/docker/libcontainerd/afc0a4c93a27d9451875f8d917b24c64f59ba3b1992ff52f9ac3f93623440a54 docker-runc
31515 ?        Sl     0:00 docker-containerd-shim b84b9b1d32bb9001359812a4dbbdf139c64c9eb9cf29475c73b2b498d990826f /var/run/docker/libcontainerd/b84b9b1d32bb9001359812a4dbbdf139c64c9eb9cf29475c73b2b498d990826f docker-runc
31839 ?        Sl     0:00 docker-containerd-shim 5b328bfc29a6a3033c1c5aa39fa38006538307aca3056f17d6421e5855bc496f /var/run/docker/libcontainerd/5b328bfc29a6a3033c1c5aa39fa38006538307aca3056f17d6421e5855bc496f docker-runc
32036 ?        Sl     0:00 docker-containerd-shim 5994ea24313b7e685321bd5bc03c0646c266969fa02f8061c0b4f1d94287f017 /var/run/docker/libcontainerd/5994ea24313b7e685321bd5bc03c0646c266969fa02f8061c0b4f1d94287f017 docker-runc
32137 ?        Sl     0:00 docker-containerd-shim aa4d9711bce7f85e04b94c8f733d0e29fb08763031fa81068acf9b5ee1bf3061 /var/run/docker/libcontainerd/aa4d9711bce7f85e04b94c8f733d0e29fb08763031fa81068acf9b5ee1bf3061 docker-runc

Ok, entonces docker-containerd-shim está viendo este punto de montaje y por lo tanto lo mantiene ocupado. No estoy seguro de qué es docker-containerd-shim y por qué el punto de montaje tiene una fuga allí. Quién lo sabe.

@crosbymichael, es posible que lo sepas.

cc @mrunalp

Gracias por el ping. Le daré un vistazo.

@ceecko ¿ puede verificar cuál es el espacio de nombres de montaje de estos subprocesos / procesos de docker-containerd-shim? Sospecho que estos no comparten el espacio de nombres de montaje con el demonio docker y probablemente debería hacerlo.

@rhvgoyal Comparten el mismo espacio de nombres

Dockerd

# ll /proc/16441/ns/mnt
lrwxrwxrwx. 1 root root 0 Nov  4 23:05 /proc/16441/ns/mnt -> mnt:[4026534781]

Revisé tres procesos docker-containerd-shim

# ll /proc/23774/ns/mnt
lrwxrwxrwx. 1 root root 0 Nov  8 07:49 /proc/23774/ns/mnt -> mnt:[4026534781]
# ll /proc/27296/ns/mnt
lrwxrwxrwx. 1 root root 0 Nov  8 07:49 /proc/27296/ns/mnt -> mnt:[4026534781]
# ll /proc/31485/ns/mnt
lrwxrwxrwx. 1 root root 0 Nov  8 07:49 /proc/31485/ns/mnt -> mnt:[4026534781]

No tenemos contenedores muertos que no se puedan quitar ahora.
El caso es que dos veces por semana detenemos y eliminamos todos los contenedores y comenzamos nuevos con la misma configuración. Antes de este "reinicio", algunos contenedores terminan muertos y no se pueden quitar. Después del "reinicio" regular, la mayoría de los contenedores terminan muertos, pero cuando todos los contenedores viejos se detienen, todos los contenedores muertos pueden retirarse repentinamente.

Tengo el mismo problema, pero también obtengo algunos errores adicionales cuando intento recrear un contenedor con docker-compose up -d :

Nov 10 13:25:21 omega dockerd[27830]: time="2016-11-10T13:25:21.418142082-06:00" level=info msg="Container b7fbb78311cdfb393bc2d3d9b7a6f0742d80dc5b672909408809bf6f7af55434 failed to exit within 10 seconds of signal 15 - using
Nov 10 13:25:21 omega dockerd[27830]: time="2016-11-10T13:25:21.530704247-06:00" level=warning msg="libcontainerd: container b7fbb78311cdfb393bc2d3d9b7a6f0742d80dc5b672909408809bf6f7af55434 restart canceled"
Nov 10 13:25:21 omega dockerd[27830]: time="2016-11-10T13:25:21.536115733-06:00" level=error msg="Error closing logger: invalid argument"
Nov 10 13:25:42 omega dockerd[27830]: time="2016-11-10T13:25:42.329001072-06:00" level=error msg="devmapper: Error unmounting device 0795abc37cc58b775ce4fb142271f5de5fa771477310321d1283f37ad6b20df9: Device is Busy"
Nov 10 13:25:42 omega dockerd[27830]: time="2016-11-10T13:25:42.329149437-06:00" level=error msg="Error unmounting container b7fbb78311cdfb393bc2d3d9b7a6f0742d80dc5b672909408809bf6f7af55434: Device is Busy"
Nov 10 13:25:42 omega dockerd[27830]: time="2016-11-10T13:25:42.544584079-06:00" level=error msg="Handler for GET /v1.24/containers/xbpf3invpull/logs returned error: No such container: xbpf3invpull"

En particular, el error Error closing logger: invalid argument , así como el error failed to exit within 10 seconds , que estoy bastante seguro de que no debería suceder ya que uso dumb-init para iniciar mis contenedores.

¿Están estos errores relacionados con este problema?

Actualmente estoy trabajando en una solución para esto. Tengo un PR abierto en contenedor para ayudar.

Es difícil encontrar una forma reproducible de probar esto, así que después de completar una solución, ¿alguno de ustedes estaría interesado en probar esta solución?

Sí, definitivamente. Intentaré crear una máquina virtual en la que pueda reproducir este problema e intentar solucionarlo allí; si eso no funciona, lo probaré en el servidor en el que tengo los problemas.

Creé una máquina virtual hace un momento y pude (¡con bastante facilidad!) Reproducir el problema.

Esto es lo que hice con Virtualbox:

  1. Instale una máquina virtual Arch Linux simple (usando el proceso de instalación normal)
  2. Instale docker, docker-compose y otro demonio del que pueda ejecutar varios procesos (en este caso, elegí nginx), luego systemctl enable docker y reinicie el sistema
  3. Configurar nginx para que se ejecute con 500 procesos de trabajo
  4. Cree un archivo docker-compose con 3 contenedores de larga ejecución (elegí postgres, etiqueta 9.2)
  5. docker-compose up -d
  6. systemctl start nginx
  7. Cambie las versiones de un par de contenedores dentro del archivo docker-compose para usar la etiqueta de imagen 9.3
  8. docker-compose pull
  9. docker-compose up -d (intenta recrear los contenedores y luego me da el error "El dispositivo está ocupado" para ambos contenedores.

Detener nginx me permite eliminar los contenedores.

docker-compose.yml partir de ahora (imité la configuración de la ventana acoplable de mi sistema fallido):

Puedo proporcionar acceso a la máquina virtual si lo solicito, solo envíeme un correo electrónico para enviar el inicio de sesión.

@mlaventure ¿ reabrir este problema? En este momento no sabemos si este problema se ha solucionado o no.

@SEAPUNK actualizaremos containerd con esta solución propuesta. Si tiene la oportunidad de probar, puedo proporcionarle binarios para que lo pruebe.

Claro, tengo mi VM en espera.

¿Alguna idea de cuándo estarán listos los binarios?

Los candidatos de lanzamiento de https://github.com/docker/docker/releases

Muy bien, lo probaré; ¡Gracias!

Yo a todos,
Creo que tengo el mismo problema que se informa aquí.

[asantos<strong i="7">@fosters</strong> atp]$ docker-compose -f docker-compose-tst-u.yml rm api
Going to remove atp_api_1
Are you sure? [yN] y
Removing atp_api_1 ... error

ERROR: for atp_api_1  Driver devicemapper failed to remove root filesystem 63fac33396c5ab7de18505b6a6b6f41b4f927abeca74472fbe8490656ed85f3f: Device is Busy



dez 02 11:26:11 fosters.vi.pt kernel: device-mapper: ioctl: unable to remove open device docker-253:1-1315304-214b3ed3285aae193228831aba63b4e24592a96facfb604e4d2ff8b36000d6f9
dez 02 11:26:11 fosters.vi.pt kernel: device-mapper: ioctl: unable to remove open device docker-253:1-1315304-214b3ed3285aae193228831aba63b4e24592a96facfb604e4d2ff8b36000d6f9
dez 02 11:26:11 fosters.vi.pt kernel: device-mapper: ioctl: unable to remove open device docker-253:1-1315304-214b3ed3285aae193228831aba63b4e24592a96facfb604e4d2ff8b36000d6f9
dez 02 11:26:11 fosters.vi.pt kernel: device-mapper: ioctl: unable to remove open device docker-253:1-1315304-214b3ed3285aae193228831aba63b4e24592a96facfb604e4d2ff8b36000d6f9
dez 02 11:26:11 fosters.vi.pt kernel: device-mapper: ioctl: unable to remove open device docker-253:1-1315304-214b3ed3285aae193228831aba63b4e24592a96facfb604e4d2ff8b36000d6f9
dez 02 11:26:11 fosters.vi.pt kernel: device-mapper: ioctl: unable to remove open device docker-253:1-1315304-214b3ed3285aae193228831aba63b4e24592a96facfb604e4d2ff8b36000d6f9
dez 02 11:26:11 fosters.vi.pt kernel: device-mapper: ioctl: unable to remove open device docker-253:1-1315304-214b3ed3285aae193228831aba63b4e24592a96facfb604e4d2ff8b36000d6f9
dez 02 11:26:15 fosters.vi.pt docker[2535]: time="2016-12-02T11:26:15.943631263Z" level=error msg="Error removing mounted layer 63fac33396c5ab7de18505b6a6b6f41b4f927abeca74472fbe8490656ed85f3f: Device is Busy"
dez 02 11:26:15 fosters.vi.pt docker[2535]: time="2016-12-02T11:26:15.943863042Z" level=error msg="Handler for DELETE /v1.22/containers/63fac33396c5ab7de18505b6a6b6f41b4f927abeca74472fbe8490656ed85f3f returned error: Driver devicemapper failed to remove root filesystem 63fac33396c5ab7de18505b6a6b6f41b4f927abeca74472
dez 02 11:26:17 fosters.vi.pt docker[2535]: time="2016-12-02T11:26:17.299066706Z" level=error msg="Handler for GET /containers/7ea053faaf5afac4af476a70d2a9611a6b882d6a135bcea7c86579a6ae657884/json returned error: No such container: 7ea053faaf5afac4af476a70d2a9611a6b882d6a135bcea7c86579a6ae657884"
dez 02 11:26:17 fosters.vi.pt docker[2535]: time="2016-12-02T11:26:17.299608100Z" level=error msg="Handler for GET /containers/c3b1a805ed5d19a5f965d0ac979f05cbb59f362336041daea90a2fa4a1845d7d/json returned error: No such container: c3b1a805ed5d19a5f965d0ac979f05cbb59f362336041daea90a2fa4a1845d7d"


[asantos<strong i="8">@fosters</strong> atp]$ docker info
Containers: 4
 Running: 3
 Paused: 0
 Stopped: 1
Images: 110
Server Version: 1.12.3
Storage Driver: devicemapper
 Pool Name: docker-253:1-1315304-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/fosters/docker-data
 Metadata file: /dev/fosters/docker-metadata
 Data Space Used: 10.71 GB
 Data Space Total: 20.72 GB
 Data Space Available: 10.02 GB
 Metadata Space Used: 16.73 MB
 Metadata Space Total: 2.303 GB
 Metadata Space Available: 2.286 GB
 Thin Pool Minimum Free Space: 2.072 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Library Version: 1.02.131 (2016-07-15)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: overlay null bridge host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.8.8-300.fc25.x86_64
Operating System: Fedora 25 (Workstation Edition)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.672 GiB
Name: fosters.vi.pt
ID: EBFN:W46P:BMFR:OSJ5:UPY2:7KAT:5NMT:KAOF:XQI3:ITEM:XQNL:46P7
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Username: xxxxxxx
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

Terminé necesitando manualmente construir el binario a través de PKGBUILD, ya que es más simple y con ajustes puedo forzar al PKGBUILD a usar una confirmación de contenedor específica (que configuré en docker / containerd @ 03e5862ec0d8d3b3f750e19fca3ee367e13c090e):

https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/docker # n19

Debería tener los resultados de la solución pronto.

Puede que esté haciendo algo mal, pero ahora no puedo poner en marcha contenedores:

Oh, supongo que tengo que actualizar runc ... brb rebuilding

Sí, la solución no parece funcionar:

docker info

Containers: 3
 Running: 0
 Paused: 0
 Stopped: 3
Images: 8
Server Version: 1.13.0-rc2
Storage Driver: devicemapper
 Pool Name: docker-8:1-1835956-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 745.6 MB
 Data Space Total: 107.4 GB
 Data Space Available: 27.75 GB
 Metadata Space Used: 2.744 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.145 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.136 (2016-11-05)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e
runc version: 51371867a01c467f08af739783b8beafc154c4d7
init version: N/A (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.8.11-1-ARCH
Operating System: Arch Linux
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 3.864 GiB
Name: docker-vm
ID: KOVC:UCU5:5J77:P7I6:XXBX:33ST:H3UZ:GA7G:O7IF:P4RZ:VSSW:YBMJ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

docker version

[root@docker-vm ~]# docker version
Client:
 Version:      1.13.0-rc2
 API version:  1.25
 Go version:   go1.7.4
 Git commit:   1f9b3ef
 Built:        Fri Dec  2 12:37:59 2016
 OS/Arch:      linux/amd64

Server:
 Version:             1.13.0-rc2
 API version:         1.25
 Minimum API version: 1.12
 Go version:          go1.7.4
 Git commit:          1f9b3ef
 Built:               Fri Dec  2 12:37:59 2016
 OS/Arch:             linux/amd64
 Experimental:        false

A menos que pueda reproducir esto en su propia máquina virtual, estoy dispuesto a proporcionar acceso a mi máquina virtual donde estoy reproduciendo este problema y he creado el paquete Docker personalizado para.

Estoy viendo esto en la ventana acoplable 1.12.3 en CentOs 7

dc2-elk-02: / root / staging / ls-helper $ docker --version
Docker versión 1.12.3, compilación 6b644ec
dc2-elk-02: / root / staging / ls-helper $ uname -a
Linux dc2-elk-02 3.10.0-327.36.3.el7.x86_64 # 1 SMP Lunes 24 de octubre 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
dc2-elk-02: / root / staging / ls-helper $ docker rm ls-helper
Respuesta de error del demonio: Driver devicemapper no pudo eliminar el sistema de archivos raíz e1b9cdeb519d2f4bea53a552c8b76c1085650aa76c1fb90c8e22cac9c2e18830: El dispositivo está ocupado

No estoy usando docker compose.

Creo que tal vez también me esté encontrando con este error.

Veo muchos de estos errores cuando realizamos pruebas de aceptación para Flocker:

[root@acceptance-test-richardw-axpeyhrci22pi-1 ~]# journalctl  --boot --dmesg
...
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: dev_remove: 41 callbacks suppressed
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:34:56 acceptance-test-richardw-axpeyhrci22pi-1 kernel: device-mapper: ioctl: unable to remove open device docker-8:1-1072929-8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62
Dec 13 17:35:00 acceptance-test-richardw-axpeyhrci22pi-1 kernel: XFS (dm-1): Unmounting Filesystem
[root@acceptance-test-richardw-axpeyhrci22pi-1 ~]# journalctl --boot --unit docker
...
-- Logs begin at Tue 2016-12-13 17:30:53 UTC, end at Tue 2016-12-13 18:01:09 UTC. --
Dec 13 17:31:12 acceptance-test-richardw-axpeyhrci22pi-1 systemd[1]: Starting Docker Application Container Engine...
Dec 13 17:31:14 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:14.676133774Z" level=info msg="libcontainerd: new containerd process, pid: 1034"
Dec 13 17:31:16 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:16.209852977Z" level=warning msg="devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man docker`
Dec 13 17:31:16 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:16.241124769Z" level=warning msg="devmapper: Base device already exists and has filesystem xfs on it. User specified filesystem  will be ignored."
Dec 13 17:31:16 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:16.259633105Z" level=info msg="[graphdriver] using prior storage driver \"devicemapper\""
Dec 13 17:31:16 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:16.423748590Z" level=info msg="Graph migration to content-addressability took 0.00 seconds"
Dec 13 17:31:16 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:16.443108711Z" level=info msg="Loading containers: start."
Dec 13 17:31:16 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:16.507397974Z" level=info msg="Firewalld running: true"
Dec 13 17:31:17 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:17.025244392Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Dec 13 17:31:17 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:17.195947610Z" level=info msg="Loading containers: done."
Dec 13 17:31:17 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:17.196550209Z" level=info msg="Daemon has completed initialization"
Dec 13 17:31:17 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:17.196575340Z" level=info msg="Docker daemon" commit=1564f02 graphdriver=devicemapper version=1.12.4
Dec 13 17:31:17 acceptance-test-richardw-axpeyhrci22pi-1 systemd[1]: Started Docker Application Container Engine.
Dec 13 17:31:17 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:17.231752452Z" level=info msg="API listen on [::]:2376"
Dec 13 17:31:17 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:31:17.231875125Z" level=info msg="API listen on /var/run/docker.sock"
Dec 13 17:32:41 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:32:41.631480676Z" level=error msg="devmapper: Error unmounting device 2a1e449a617f575520ef95c99fb8feab06986b7b86d81e7236a49e1a1cf192bb: Device is Busy"
Dec 13 17:32:41 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:32:41.632903143Z" level=error msg="Error unmounting container 117647e8bdd4e401d8d983c80872b84385d202015265663fae39754379ece719: Device is Busy"
Dec 13 17:33:20 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:33:20.300663432Z" level=error msg="devmapper: Error unmounting device 52e079667cf40f83b5be6d9375261500a626885581f41fc99873af58bc75939e: Device is Busy"
Dec 13 17:33:20 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:33:20.301660779Z" level=error msg="Error unmounting container 2aeabbd72f90da6d4fb1c797068f5c49c8e4da2182daba331dfe3e3da29c5053: Device is Busy"
Dec 13 17:34:50 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:34:50.461588888Z" level=error msg="devmapper: Error unmounting device 8a41ac9ebe13aa65b8513000bec2606a1dfc3ff624082dc9f4636b0e88d8ac62: Device is Busy"
Dec 13 17:34:50 acceptance-test-richardw-axpeyhrci22pi-1 dockerd[795]: time="2016-12-13T17:34:50.462602087Z" level=error msg="Error unmounting container e0c45f71e2992831a10bc68562bcc266beba6ef07546d950f3cfb06c39873505: Device is Busy"

[root@acceptance-test-richardw-axpeyhrci22pi-1 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 4
Server Version: 1.12.4
Storage Driver: devicemapper
 Pool Name: docker-8:1-1072929-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 525.5 MB
 Data Space Total: 107.4 GB
 Data Space Available: 8.327 GB
 Metadata Space Used: 1.384 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.146 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.135-RHEL7 (2016-09-28)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: flocker local
 Network: host bridge overlay null
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-514.2.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.305 GiB
Name: acceptance-test-richardw-axpeyhrci22pi-1
ID: 4OHX:ODXJ:R2MH:ZMRK:52B6:J4TH:PMDR:OQ5D:YUQB:5RE3:YDAQ:V5JP
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

[root@acceptance-test-richardw-axpeyhrci22pi-1 ~]# cat /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process

[Install]
WantedBy=multi-user.target

@rhvgoyal @rhatdan @vbatts
Ejecutando problemas de 'Dispositivo ocupado' durante la eliminación / eliminación de contenedores detenidos / muertos en RHEL7.1 ejecutando dockerd 1.12.4 con eliminación y eliminación diferidas habilitadas = true sin MountFlags en los archivos de la unidad systemd docker.service.
También viendo mensajes del kernel como:
"kernel: device-mapper: thin: Falló la eliminación del dispositivo delgado 120". (120 es la identificación del dispositivo del dispositivo thinpool del contenedor que se está retirando)

En todos los casos, el punto de montaje del dispositivo devicemapper thinpool para el contenedor que se está eliminando se filtró en el espacio de nombres de montaje de otro pid en el host que se está iniciando con MountFlag = private / slave.

  • ntpd.service se inicia con PrivateTmp = true en RHEL
  • El servicio systemd-udevd se inicia con MountFlags = slave en RHEL
    En los hosts donde fallan las eliminaciones de contenedores, cualquiera de estos procesos se reinició después de la hora de inicio del contenedor correspondiente.

Por lo tanto, parece que es muy fácil filtrar puntos de montaje en el espacio de nombres de montaje del host, ya que los procesos del sistema anteriores dejan de compartir algunos espacios de nombres de montaje, de forma predeterminada, que no se pueden cambiar / controlar individualmente.
¿Ejecutar dockerd con mountflags = slave es la única solución aquí? También puede ayudarme a entender por qué mountflags = slave (y por defecto compartido) se eliminó hace algún tiempo del archivo de la unidad docker systemd.
¿En qué escenarios, ejecutar dockerd con la propagación del punto de montaje esclavo rompe otras cosas?
Gracias.

Hay diferencias en el kernel RHEL y luego en el kernel ascendente que estamos tratando de remediar, lo que nos obliga a ejecutar el dockerd en su propio espacio de nombres de montaje, en Fedora el kernel funciona de manera diferente, lo que nos permite ejecutar el dockerd en el espacio de nombres del host.

@rhvgoyal puede darte los detalles sangrientos.

@ravilr , en kernels rhel / centos, deshabilitar la eliminación diferida. Kernel no tiene parches para admitirlo.

También ejecute Docker con MountFlags = slave

Puede continuar usando la eliminación diferida en kernels rhel / centos y eso debería funcionar.

Por cierto, si está utilizando docker-storage-setup para configurar el almacenamiento, se determinará automáticamente si el kernel subyacente admite la eliminación diferida o no y establecerá / deshabilitará esa opción en consecuencia.

@rhvgoyal , ¿conoce alguna forma de liberar espacio después de la eliminación fallida del sistema de archivos raíz del contenedor?

@rhvgoyal Gracias por las sugerencias. Intentaré lo que sugirió e informaré aquí, si continuamos viendo problemas relacionados con la eliminación de contenedores.

Protuberancia; ¿Hay más información que necesite para ayudar a resolver esto?

Lo encontré yo mismo ejecutando 1.12.5 en Centos 7.

Habilitar moutflags = slave, así como habilitar la eliminación y eliminación diferidas, me ha solucionado este problema. Ahora me encuentro con este error de condición de carrera: https://github.com/docker/docker/issues/23418

Esto es aproximadamente 100 veces mejor que tener que sacar a la fuerza los contenedores atascados, pero aún así no es genial.

Puedo reproducir en CentOS 7 en xfs.

El mismo problema aquí, Docker 1.13.0 - CentOS7:

docker-compose down
Removing container_container_1 ... error

ERROR: for container_container_1  Driver devicemapper failed to remove root filesystem 4d2d6c59f8435436e4144cc4e8675a0828658014cf53804f786ef2b175b4b324: Device is Busy

¿Alguna resolución a la vista sobre este? Sigo viendo el problema y mis intentos de encontrar el proceso que mantiene el dispositivo abierto han fallado. No parece haber ningún proceso que mantenga abierto el dispositivo ocupado.

Gracias.

(Actualización de mi comentario: no estaba claro en la primera lectura del hilo, pero parece que habilitar la eliminación diferida y configurar MountFlags = slave puede solucionarlo. También actualizaré Docker a 1.13).

alguien que quiera solucionar este problema podría ver el comentario de @ravilr arriba, los detalles a continuación:

En todos los casos, el punto de montaje del dispositivo devicemapper thinpool para el contenedor que se está eliminando se filtró en el espacio de nombres de montaje de otro pid en el host que se está iniciando con MountFlag = private / slave.

ntpd.service se inicia con PrivateTmp = true en RHEL
El servicio systemd-udevd se inicia con MountFlags = slave en RHEL
En los hosts donde fallan las eliminaciones de contenedores, cualquiera de estos procesos se reinició después de la hora de inicio del contenedor correspondiente.

either of these processes were restarted after the corresponding container start time. es el punto clave, los archivos en algún directorio como "tmp" son utilizados por otro espacio de nombres, no solo por el contenedor de la ventana acoplable, por lo que la ventana acoplable no puede matarlos sin forzarlos.
puede solucionar este problema deteniendo los procesos reiniciados o configurando su parámetro systemd PrivateTmp=true como falso y reiniciarlos.

referencia: https://www.freedesktop.org/software/systemd/man/systemd.exec.html

@KevinTHU Tal vez no haya entendido bien tus comentarios.

Pero en mi caso (ubuntu 14.04), todo lo que tengo que hacer para solucionar este problema es reiniciar el servicio de Docker.
( service docker restart ). no está involucrado "ntpd.service" o "systemd-udevd service".

¿Tiene sentido eso?

@quexer, por supuesto, reiniciar Docker puede resolver este problema, pero todo el contenedor también se reiniciará, eso es demasiado costoso para un entorno de producción.

@KevinTHU reiniciar el servicio NO afecta a ningún contenedor en ejecución. Puede probarlo usted mismo.

@quexer Depende de tu configuración. Pero sospecho que si deja los contenedores ejecutándose con el modo --live-restore , es posible que no resuelva el problema.
De forma predeterminada, Docker detendrá todos los contenedores al salir, y aún así, si hay algo cuando se trata de una copia de seguridad, también los eliminará.

@ cpuguy83 @KevinTHU Lo siento, es mi culpa. Tienes razón, reiniciar Docker hará que se reinicien todos los contenedores.

Ahora recibo esto regularmente con una de mis máquinas virtuales, de la nada. Curiosamente, uno de ellos se volvió borrable después de más de 8 horas de dejarlo solo. Aquí está mi información:

rlpowell@vrici> sudo docker info
Containers: 15
 Running: 3
 Paused: 0
 Stopped: 12
Images: 155
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-253:0-2621441-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 24.5 GB
 Data Space Total: 107.4 GB
 Data Space Available: 24.28 GB
 Metadata Space Used: 29.57 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.118 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.135 (2016-09-26)
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
 Volume: local
 Network: host bridge null overlay
 Authorization: rhel-push-plugin
Swarm: inactive
Runtimes: oci runc
Default Runtime: oci
Security Options: seccomp selinux
Kernel Version: 4.9.0-0.rc1.git4.1.fc26.x86_64
Operating System: Fedora 26 (Server Edition)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 2
CPUs: 4
Total Memory: 8.346 GiB
Name: vrici.digitalkingdom.org
ID: JIIS:TCH7:ZYXV:M2KK:EXQH:GZPY:OAPY:2DJF:SE7A:UZBO:A3PX:NUWF
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://registry.access.redhat.com/v1/
Insecure Registries:
 127.0.0.0/8
Registries: registry.access.redhat.com (secure), docker.io (secure)

Y está roto de nuevo.

No sé si esto es relevante, pero / var / log / messages tiene:

14 de febrero 16:58:49 núcleo de vrici: dev_remove: 40 devoluciones de llamada suprimidas
14 de febrero 16:58:54 kernel vrici: dev_remove: 40 devoluciones de llamada suprimidas
14 de febrero 16:58:59 vrici kernel: dev_remove: 40 devoluciones de llamada suprimidas

El error ahora mismo es:

Respuesta de error del daemon: Driver devicemapper no pudo eliminar el sistema de archivos raíz b265eec88a6d1220eab75391bcf4f85bcd687301bfabfa3a2331217918c7377e: no se pudo eliminar el dispositivo dd81b82c875f4bcef819be83e9344cf5065a9dee9 is

El dispositivo está ocupado en alguna parte. ¿Puede intentar seguir el script después de la falla y ver dónde podría estar ocupado el dispositivo?

https://github.com/rhvgoyal/misc/blob/master/find-busy-mnt.sh

./find-busy-mnt.sh

./find-busy-mnt.sh dd81b82c875f4bcef819be83e9344c507965a9e9f48189f08c79fde5a9bde681

rlpowell @ vrici> sudo bash /tmp/find-busy-mnt.sh b2205428f34a0d755e7eeaa73b778669189584977c17df2bf3c3bf46fe98be10
No se encontraron pids
rlpowell @ vrici> sudo docker rm freq_build
Respuesta de error del daemon: Driver devicemapper no pudo eliminar el sistema de archivos raíz b2205428f34a0d755e7eeaa73b778669189584977c17df2bf3c3bf46fe98be10: no se pudo eliminar el dispositivo 5f1095868bbfe85afccf392f6f4fbb8ed4bcfac956a24

Oh, parece que ese fue el hash incorrecto.

rlpowell@vrici> mount | grep b2205428f34a0d755e7eeaa73b778669189584977c17df2bf3c3bf46fe98be10
rlpowell@vrici> sudo bash /tmp/find-busy-mnt.sh 5f1095868bbfe85afccf392f6f4fbb8ed4bcfac88a5a8044bb122463b765956a
PID     NAME            MNTNS
12244   php-fpm         mnt:[4026532285]
12553   php-fpm         mnt:[4026532285]
12556   php-fpm         mnt:[4026532285]
12557   php-fpm         mnt:[4026532285]
12558   php-fpm         mnt:[4026532285]
rlpowell@vrici> pg php-fpm
rlpowell 25371 10518  0 00:43 pts/9    00:00:00  |           \_ grep --color=auto php-fpm
root     12244     1  0 00:08 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
apache   12553 12244  0 00:08 ?        00:00:00  \_ php-fpm: pool www
apache   12556 12244  0 00:08 ?        00:00:00  \_ php-fpm: pool www
apache   12557 12244  0 00:08 ?        00:00:00  \_ php-fpm: pool www
apache   12558 12244  0 00:08 ?        00:00:00  \_ php-fpm: pool www
rlpowell@vrici> sudo service php-fpm stop
Redirecting to /bin/systemctl stop  php-fpm.service
rlpowell@vrici> sudo bash /tmp/find-busy-mnt.sh 5f1095868bbfe85afccf392f6f4fbb8ed4bcfac88a5a8044bb122463b765956a
No pids found
rlpowell@vrici> sudo docker rm freq_build
freq_build

Eso es ... extremadamente extraño. No tengo idea de por qué el kernel considera que un proceso php-fpm totalmente no relacionado mantiene abiertos esos montajes.

@rlpowell Sí, ese es todo el problema detrás de este problema. Algo está provocando que el espacio de nombres de montaje no funcione correctamente.

Encontré lo que parece ser una solución provisional aquí: http://blog.hashbangbash.com/2014/11/docker-devicemapper-fix-for-device-or-resource-busy-ebusy/

Esto básicamente significa agregar la siguiente línea a su archivo systemd docker.service:
MountFlags = privado

Esto parece funcionar, al menos para la pequeña muestra de ejecuciones de la ventana acoplable que he realizado desde que lo implementé. Sería bueno si alguien que comprenda completamente la ventana acoplable pudiera explicar las consecuencias de esta marca. Sospecho que los sistemas de archivos montados después de que se inicia la ventana acoplable pueden no estar disponibles para los contenedores, pero sinceramente, no lo sé. Nuestra configuración es para usar en un servidor de compilación y parece que todo funciona bien.

Este problema es bastante importante, hace que la ventana acoplable sea inutilizable en Centos 7 / RHEL - (¿y ha estado abierta durante 4 meses?)
¿Alguna ETA?

El último RHEL / centos debería enviarse con MountFlags = slave en el archivo docker.service.

@rhvgoyal este no es el caso: https://github.com/docker/docker/blob/master/contrib/init/systemd/docker.service.rpm

Esto está en la rama maestra, pero las ramas 1.13.xy 17.03.x tampoco lo tienen.

Por lo que puedo decir es que esta bandera estaba en una unidad de servicio anterior pero se ha eliminado. Pero no encontré por qué. Quizás estas banderas resuelvan el problema actual pero creen otros problemas.

@rlpowell @SEAPUNK parece que este no es el caso en mi instalación de ubuntu:

$ docker rm test
Error response from daemon: Driver devicemapper failed to remove root filesystem f23064c71f22215f8cc7c7192488ab1bbb24693b36e07018b32d58292ee6ce47: Device is Busy
$ sudo ./find-busy-mnts.sh f23064c71f22215f8cc7c7192488ab1bbb24693b36e07018b32d58292ee6ce47
No pids found
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
$ docker version
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:50:14 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:50:14 2017
 OS/Arch:      linux/amd64
 Experimental: false
$ docker info
Containers: 17
 Running: 14
 Paused: 0
 Stopped: 3
Images: 148
Server Version: 1.13.1
Storage Driver: devicemapper
 Pool Name: ubuntu--vg-thinpool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: ext4
 Data file: 
 Metadata file: 
 Data Space Used: 29.3 GB
 Data Space Total: 386.5 GB
 Data Space Available: 357.2 GB
 Metadata Space Used: 16.97 MB
 Metadata Space Total: 4.295 GB
 Metadata Space Available: 4.278 GB
 Thin Pool Minimum Free Space: 38.65 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Library Version: 1.02.110 (2015-10-30)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1
runc version: 9df8b306d01f59d3a8029be411de015b7304dd8f
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-62-generic
Operating System: Ubuntu 16.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 15.56 GiB
Name: martin
ID: W4KC:COLM:3G33:I54E:PNUD:A5XX:TEBZ:VG43:BR62:JWCU:B44Y:DQWJ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Escribí un artículo que explica por qué RHEL7 no puede admitir --live-restore hasta RHEL7.4 y por qué la ventana acoplable debería ejecutarse dentro de un espacio de nombres de montaje diferente al del host.

https://access.redhat.com/articles/2938171

+1 Me gustaría ejecutar con un espacio de nombres de montaje diferente y hacer que todos los montajes de la ventana acoplable sean privados.
Sin embargo, hay algunas partes complicadas.

Si la ventana acoplable ascendente no tiene un indicador adecuado para ejecutarse en el MountFlags=slave entonces eso es un error y desencadenará fácilmente problemas con los espacios de nombres de montaje que se filtran entre los contenedores y el host y pueden provocar problemas al eliminar las imágenes del contenedor.

FWIW, el MountFlags=slave se eliminó en https://github.com/docker/docker/pull/22806 , después de la revisión por parte de los mantenedores de Red Hat, pero parece que está causando problemas, así que me pregunto si eso debería revertirse hasta RHEL7.4?

Sí, lo habíamos eliminado y luego causó problemas, así que en uno de los hilos de discusión llegamos a la conclusión de que nos permitían reintroducirlo. Pensé que ya lo habías hecho. Sin embargo, no recuerdo qué hilo era.

@thaJeztah Sí, nos equivocamos y encontramos problemas adicionales.

Y estos problemas eran principalmente específicos de los núcleos más antiguos. Los núcleos más nuevos funcionan bien.

Déjame abrir un PR para discutir opciones

mismo problema, Docker 1.10.3, CentOS Linux versión 7.2.1511
dmesg:
[1732917.246900] mapeador de dispositivo: ioctl: no se puede eliminar el dispositivo abierto docker-8: 3-5242884-b3c2bfc1d52638ca89c5bd4c880ac1ca1b596e574bcda09042eaafef74866f78
mensajes:
3 de abril 03:32:34 A02-R05-I97-106 docker-current: time = "2017-04-03T03: 32: 34.346374677 + 08: 00" level = error msg = "Error al quitar la capa montada b0b1e839f366086fd7cff564feee385a3aed71a56db90217d4c72c416 Buscado "
3 de abril 03:32:34 A02-R05-I97-106 docker-current: time = "2017-04-03T03: 32: 34.346597095 + 08: 00" level = error msg = "Handler for DELETE /v1.22/containers / b0b1e839f366086fd7cff564feee385a3aed71a56db90e4c0416517a72c13f2d devolvió el error: El controlador de dispositivo no pudo eliminar el sistema de archivos raíz b0b1e839f366086fd7cff564feee385a3aed71a56db902feed72

montar:
buscar / proc / * / mounts | xargs grep -E "5242884-b3c2bfc1d52638ca89c5bd4c880ac1ca1b596e574bcda09042eaafef74866f78"
/ proc / 159779 / mounts: / dev / mapper / ventana acoplable-8: 3-5.242.884-b3c2bfc1d52638ca89c5bd4c880ac1ca1b596e574bcda09042eaafef74866f78 / export / acoplable / devicemapper / mnt / b3c2bfc1d52638ca89c5bd4c880ac1ca1b596e574bcda09042eaafef74866f78 XFS rw, relatime, nouuid, attr2, inode64, logbsize = 64k, Sunit = 128, ancho = 128, sin cuota 0 0
/ proc / 159806 / mounts: / dev / mapper / ventana acoplable-8: 3-5242884-b3c2bfc1d52638ca89c5bd4c880ac1ca1b596e574bcda09042eaafef74866f78 / export / acoplable / devicemapper / mnt / b3c2bfc1d52638ca89c5bd4c880ac1ca1b596e574bcda09042eaafef74866f78 XFS rw, relatime, nouuid, attr2, inode64, logbsize = 64k, Sunit = 128, ancho = 128, sin cuota 0 0
contenedor nuevo:
Docker inspeccionar 8777d36c94ec | grep Pid
"Pid": 159779,

// mi culpa, lo he resuelto。

¿Qué es el ID "8777d36c94ec"? ¿Este es el ID de contenedor del contenedor que se está quitando o algún otro contenedor?

Por lo tanto, el dispositivo está ocupado porque todavía está montado en un contenedor. Por lo tanto, ninguno de los contenedores que se están quitando aún no se ha detenido. O si es un contenedor diferente, entonces no debería ser visible en otro contenedor.

¿No estás seguro de cuál es el punto de montaje "/ export / docker / devicemapper / mnt / ...." y quién lo creó?

En mi sistema Mint, actualizar de 17.03.1~ce-0~ubuntu-xenial a 17.04.0~ce-0~ubuntu-xenial hace que este problema ocurra con mucha frecuencia.

Antes de actualizar, nunca lo había encontrado. Después de la actualización fue muy frecuente. La degradación de nuevo a 17.03.1 parece haberlo resuelto.

Solo como una nota para otros que lean este hilo, si está ejecutando cAdvisor de Google, verá este problema al intentar eliminar un contenedor. Primero debe detener cAdvisor, luego quitar el contenedor y luego iniciarlo de nuevo.

@bmbroom Ídem . Ejecutamos servidores de compilación basados ​​en ubuntu que agitan los contenedores todo el día (generalmente impulsados ​​por docker-compose), y habíamos estado viendo este problema un par de veces a la semana. Los servidores son una mezcla de confianza y xenials. Recientemente comenzamos a actualizar a 17.04.0 ~ ce y estamos viendo que esto sucede varias veces al día.

No tengo claro si MountFlags = slave es aplicable a ubuntu, pero eso es lo que estoy intentando a continuación.

@rhvgoyal
disculpa, mi error.
otros todavía están montados en mi contenedor。

Acabo de tener el mismo problema en:

  • docker: Docker versión 17.03.1-ce, compilación c6d412e
  • sistema operativo: Red Hat Enterprise Linux Server versión 7.3 (Maipo)
  • kernel: 3.10.0-514.6.1.el7.x86_64
  • ntpd: 4.2.6p5

Hacer systemctl restart ntpd solucionó el problema al instante.

@xeor
¿Cuál es tu MountFlags dentro del archivo de unidad docker.service?

No hay MountFlags en mi archivo /usr/lib/systemd/system/docker.service , pero systemctl show docker muestra MountFlags=0 .

Lo mismo para ntpd.service . Eso también tiene PrivateTmp=true debajo de la estrofa [Service] (si eso importa).

Ejecute con MountFlags = slave por ahora.

@rhvgoyal comprobó mi archivo docker.service. Pero tu valor ya está establecido:

grep MountFlags /etc/systemd/system/multi-user.target.wants/docker.service
MountFlags=slave

usando el último redhat (3.10.0-514.16.1.el7) / docker (1.12.6-16.el7)

¿Qué pasa con MountFlags = private? ¿Podría explicar la diferencia entre privado y esclavo?

Actualmente estoy viendo este problema en RHEL / CentOS 7.3, kernel 3.10.0-514.16.1.el7.x86_64, con Docker versión 17.05.0-ce, compilación 89658be. Hemos estado viendo este problema de vez en cuando durante el año pasado.

Tampoco tenemos la opción MountFlags en /etc/systemd/system/multi-user.target.wants/docker.service. ¿Deberíamos agregar "MountFlags = slave" allí?

Veo comentarios que dicen que este problema ocurre en Centos, RHEL y Ubuntu. ¿Hay otros sistemas operativos a salvo de este problema en particular, como Debian o ContainerLinux o SUSE?

@earwax Cualquier cosa con un kernel más nuevo (> = 3.15) generalmente debería funcionar mejor.
Pero siempre hay situaciones que puede crear en las que se produce este error.
Además, hay varias formas enumeradas en los comentarios aquí para mitigarlo.

Veo este problema en SUSE ... pero no pude encontrar una solución ... Veo que esto sucede principalmente en el proveedor: AZURE

también encontramos este problema, cuando actualizamos dockerd de 1.12.6 a 17.05. Todos los contenedores antiguos no se podían eliminar sin '-f', estos contenedores tenían una característica común de que no se detenían todos cuando actualizamos dockerd, porque tenemos la configuración '--live-restore'. Creo que hay algún problema aquí.

Esto sigue siendo un problema en 17.06, FYI, al menos con CentOS 7.

@ MGD1981 este error debe

Sí, probando esto ahora en nuestro entorno de control de calidad. Estaré prestando mucha atención
a los montes. ¿Existe un riesgo potencial de que el FS de un contenedor sea
"olvidado" con esta configuración, con el tiempo llenando el host con discos
de contenedores muertos?

El lunes 3 de julio de 2017 a las 10:38 p.m., KevinTHU [email protected] escribió:

@ MGD1981 https://github.com/mgd1981 este error debe corregirse , estamos
usando centos 7 de la misma manera, y descubrimos que no solo los contenedores viejos
creado antes de actualizar la ventana acoplable tiene un problema de "dispositivo está ocupado", pero también el
nuevos contenedores creados, esto es realmente crítico, y lo solucionamos
agregando "MountFlags = slave" a docker.service. Sin embargo, no sabemos si
este parámetro traerá algún otro problema.

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/moby/moby/issues/27381#issuecomment-312766596 , o silenciar
la amenaza
https://github.com/notifications/unsubscribe-auth/ADzZzStBbgubPK4soa2w5WW_hthYnZwjks5sKaW2gaJpZM4KW5Fn
.

@ MGD1981 sí, parece que hay discos en el host que ya no se utilizan. Ver # 33025

@ceecko Esto ya no debería suceder a partir del 17.06, aunque si habilita la eliminación / eliminación diferida, es posible que no se elimine de inmediato.

@ cpuguy83 ¡agradable! ¿Limpiará también los discos viejos que quedaron en versiones anteriores?

@ cpuguy83 ¿ya se ha lanzado la

@ravilr Está fuera. Los lanzamientos provienen de github.com/docker/docker-ce.

@ceecko No lo creo.

@ cpuguy83 gracias. las notas de la versión 17.06 no parecen mencionar ninguna corrección de relaciones públicas con respecto a este problema. ¿Cuál fue la solución para abordar esto? Gracias de nuevo.

Estoy ejecutando 17.06.0-ce en CentOS 7 (con almacenamiento de grupo delgado) y esto está sucediendo mucho últimamente.

+ docker rm -f jenkins-build_rcc_testrun-1945
Error response from daemon: driver "devicemapper" failed to remove root filesystem for d626082dffb7c52fa8c012a2de3b113e431d1bdbc834084654051900e9482f23: failed to remove device 01c54a8701901f7fcb096e61b9028665df7f0596a0ad01d8ce0cd88215959d14: Device is Busy
Build step 'Execute shell' marked build as failure

¿Eso es con o sin MountFlags=slave , @ AaronDMarasco-VSI? CentOS 7.3?

17.06 no soluciona el problema fundamental, simplemente lo maneja mejor.
Estoy viendo si hay algo que está haciendo Docker (o algún subcomponente como containerd) que agrava el problema.

@esabol No ... privado?

docker.service.d$ cat * | grep -v '^#'
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=cgroupfs --storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/vg_ex-docker--pool --storage-opt dm.use_deferred_removal=true

[Unit]
After=lvm2-lvmetad.socket lvm2-activation.service lvm2-lvmetad.service

[Service]
MountFlags=private

docker.service.d$ cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

Bueno, @ AaronDMarasco-VSI, aconsejaría cambiar eso a MountFlags=slave , lo que nos ha mejorado la situación, pero todavía estamos en 17.05 y creo que vi algo que no quieres usar. MountFlags=slave con dm.use_deferred_removal ? Quizás alguien más comente y confirme.

Estoy usando Docker 17.03 en centos 7.3 y kernel 4.10. y he estado viendo este error mucho. A continuación se muestran algunos detalles más sobre MountFlag.

# systemctl show docker | grep Private
PrivateTmp=no
PrivateNetwork=no
PrivateDevices=no
# systemctl show docker | grep Mount
MountFlags=0

El mismo problema aquí con Debian 8. rompe nuestro CI, ¿hay alguna solución posible?

@ thg303 intente apagar su dockerdeamon, si es posible e intente limpiar / eliminar el sistema de archivos raíz que ocurre en su archivo de registro (rm / var / lib / docker / .....). Pero debería tomar una instantánea / copia de seguridad antes :-)

El mismo problema aquí con Fedora 25, kernel 4.11.12.

Containers: 5
 Running: 0
 Paused: 0
 Stopped: 5
Images: 16
Server Version: 17.06.0-ce
Storage Driver: devicemapper
 Pool Name: docker-253:2-5373989-pool
 Pool Blocksize: 65.54kB
 Base Device Size: 21.47GB
 Backing Filesystem: xfs
 Data file: /dev/loop1
 Metadata file: /dev/loop2
 Data Space Used: 59.33GB
 Data Space Total: 107.4GB
 Data Space Available: 48.05GB
 Metadata Space Used: 76.11MB
 Metadata Space Total: 2.147GB
 Metadata Space Available: 2.071GB
 Thin Pool Minimum Free Space: 10.74GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.136 (2016-11-05)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a
runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.11.12-200.fc25.x86_64
Operating System: Fedora 25 (Workstation Edition)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.703GiB
Name: wayland
ID: 3T2X:CMFA:53Y2:27FL:RBMD:FHMH:32QE:2DKL:L256:O2GJ:LT2X:N4DD
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Http Proxy: http://127.0.0.1:8118/
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
         Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.

Tengo este problema cada vez que la ventana acoplable se actualiza en centos7. Reinicio la ventana acoplable y luego todo funciona bien.

Lo mismo para mí en Fedora 26 con Docker 17.06.0-ce. Reiniciar Docker no solucionó el problema.

$ systemctl show docker | grep Private
PrivateTmp=no
PrivateDevices=no
PrivateNetwork=no
PrivateUsers=no
$ systemctl show docker | grep Mount
MountFlags=0
MountAPIVFS=no

¿En serio se acerca un año y este error todavía está aquí?

@NeckBeardPrince Por favor, no pierdas nuestro tiempo con comentarios tan inútiles.
Si quieres ayudar a resolverlo, genial. Si desea informar más datos sobre el problema, excelente.

Aparte de eso, hay un par de formas de solucionar este problema que se han publicado aquí.

El archivo de unidad systemd no se envía con MountFlags=slave

Server Version: 17.06.1-ce
CentOS Linux release 7.3.1611 (Core)

[root<strong i="7">@dokken</strong> /]# systemctl show docker | grep Private
PrivateTmp=no
PrivateNetwork=no
PrivateDevices=no
[root<strong i="8">@dokken</strong> /]# systemctl show docker | grep Mount
MountFlags=0

La última vez que tuve este problema, fue ntpd que sostenía las monturas.
Hoy, tuve el mismo problema, y ​​esta vez, el motivo fue una instancia mariadb ejecutándose en el host.

  • Docker-engine-17.05.0.ce-1.el7.centos.x86_64
  • mariadb-server-5.5.56-2.el7.x86_64

Ejemplo para encontrar el proc que sostiene las monturas ...

# container with the problem
docker rm efad7...
Error response from daemon: Driver devicemapper failed to remove root filesystem efad7...: remove /var/lib/docker/devicemapper/mnt/9bd66290ee...: device or resource busy

# Grep after parts of the mountpoint
grep docker /proc/*/mountinfo | grep 9bd66290ee
/proc/9736/mountinfo:776 427 253:24 / /var/lib/docker/devicemapper/mnt/9bd66290e...
/proc/9910/mountinfo:776 427 253:24 / /var/lib/docker/devicemapper/mnt/9bd66290e...

# Find who the pid's belongs to
ps aux | grep -E "9736|9910"
mysql     9736  0.0... /usr/bin/mysqld_safe --basedir=/usr
mysql     9910  9.8 ... /usr/libexec/mysqld --base...

# Do some extra research on one of the pids
grep docker /proc/9736/mountinfo | wc -l
70

grep docker /proc/9736/mountinfo | grep -o "/run/docker/netns/" | wc -l
17

grep docker /proc/9736/mountinfo | grep -o "/var/lib/docker/containers/" | wc -l
18

grep docker /proc/9736/mountinfo | grep -o "/var/lib/docker/devicemapper/mnt/" | wc -l
33

Después de reiniciar mariadb, soltó los puntos de montaje, sin embargo, agarró muchos de ellos cuando comenzó.

grep docker /proc/16367/mountinfo | wc -l
52

La mayoría de los errores de eliminación se deben a que el punto de montaje (por lo tanto, el dispositivo) está ocupado en algunos otros espacios de nombres de montaje. Creo que seguir el PR propuesto ayudará con este problema si el kernel es lo suficientemente nuevo.

https://github.com/moby/moby/pull/34573

Si está ejecutando un kernel antiguo, entonces hemos escrito una llamada de complemento oci-umount para reducir los problemas de fugas de montaje.

https://github.com/projectatomic/oci-umount

@rhvgoyal ¿Tiene un plan sobre qué versión de Docker incluir este PR? Todavía estamos lidiando con el driver "devicemapper" failed to remove root filesystem de forma regular.

Versión de CentOS Linux 7.4.1708 (Core)
3.10.0-693.5.2.el7.x86_64
17.06.2-ce

PARECE QUE FINALMENTE ESTÁ FIJADO

Estamos ejecutando la versión 17.09.0-ce de Docker y aún enfrentamos el mismo problema.

Ocasionalmente nos encontramos con este problema en Oracle Linux :, con la versión de Docker 17.03.1-ce (de los repositorios de Oracle)

Linux server 4.1.12-103.3.8.1.el7uek.x86_64 #2 SMP Fri Sep 15 17:23:08 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux

Todo lo anterior está arreglado por el TDA del proyecto, por lo que no podemos cambiar nada por el momento.

El 90% de nuestros otros entornos son Centos 7.3 / 7.4, y no hemos visto el problema allí.

Acabo de resolver una instancia de este problema con Docker 17.05 en arch Linux en 4.11.9
por

  1. docker rm -f [myContainer] (fallando con el driver "devicemapper" failed to remove root filesystem como de costumbre)
  2. ls /var/lib/docker/devicemapper/mnt/

Esto hizo que el contenedor finalmente desapareciera (aunque no estoy seguro de por qué).

@MonsieurWave Por increíble que parezca, ¡el truco de "ls" funcionó perfectamente para mí cuando todo lo demás no funcionó!

El docker rm -f [container] informará una falla pero eventualmente limpiará el contenedor y el sistema de archivos. El comando ls es una pista falsa, todo lo que realmente necesita es esperar unos segundos. Pero mejor que eso es usar MountFlags=slave . Y lo mejor es apagar el devicemapper y usar overlay2 en su lugar.

Y lo mejor es apagar el devicemapper y usar overlay2 en su lugar.

Hemos estado usando Docker en CentOS 7.x (actualmente en 7.4) durante más de un año. Cuando instalamos Docker por primera vez, todo el mundo dijo que tenía que usar devicemapper con direct-lvm para obtener el mejor rendimiento y estabilidad. https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/ todavía dice que debe usar devicemapper en CentOS con Docker EE. Afortunadamente, usamos Docker CE, por lo que podríamos cambiar a overlay2. Siento que la gente de Docker se deslizó en el cambio en el predeterminado de devicemapper a overlay2 en CentOS en v1.13.0 / 1 con poca fanfarria o discusión. ¿Existe alguna información sólida sobre el rendimiento / estabilidad de overlay2 versus devicemapper (direct-lvm) en CentOS 7? Mi búsqueda en Google no ha encontrado mucho ...

Lo pasamos muy mal con los kernels de CentOS 7.2 (su frankenstein 3.10.x). Muchos choques. Estábamos ejecutando Kubernetes en un entorno de desarrollo, por lo que la rotación de nuestros contenedores era muy alta, pero incluso en instalaciones relativamente silenciosas, encontramos el combo de superposición de CentOS + estándar muy inestable. Ejecutar un kernel ascendente 4.10+ con overlay2 es mucho mejor. No he probado una versión más reciente de CentOS.

Deberá utilizar un sistema de archivos subyacente que sea ext4 o XFS formateado con "-n ftype = 1". Docker se ejecutará si tiene un XFS formateado incorrectamente, pero los resultados serán impredecibles.

Sí, hace mucho que cambié a overlay2, y recomiendo a cualquiera que todavía esté usando devicemapper que pueda usar overlay2 para cambiar , ya que incluso este problema aparte, he leído que devicemapper es un controlador de almacenamiento muy pobre para Docker en general.

Reiniciar ntpd solucionó el problema que estaba teniendo ... tan confuso. ¿Existe alguna configuración de daemon.json "recomendada" para Docker en Centos7?

Algunas mejoras están por llegar.

Específicamente, el problema con estos otros servicios del sistema parece ser una condición de carrera con la configuración de espacios de nombres de montaje (para esos otros servicios del sistema) y el intento de Docker de mantener sus propios montajes privados ... la intención es que Docker evite que sus montajes se filtren contenedores, desafortunadamente está causando fugas en otros lugares y, en realidad, terminan manteniendo referencias privadas a esos puntos de montaje, lo que significa que no se pueden desmontar en esos espacios de nombres, excepto manualmente o cuando el proceso se reinicia.

Además, ha habido algunos cambios recientes para lidiar con las condiciones de carrera con el uso de la propagación de montaje MS_PRIVATE tanto en runc como en la ventana acoplable.
¿Será perfecta la próxima versión? Probablemente no ... pero espero que esto mejore.

Obtuve exactamente lo mismo que ventana acoplable 12.1.1, no hay posibilidad de actualizar ahora. ¿Está arreglado más tarde en alguna parte? La solución rápida es eliminar los procesos y reiniciar el servicio Docker, pero ...

Estas versiones me solucionan completamente el problema, incluido --live-restore

CentOS 7.4.1708 (3.10.0-693.5.2.el7.x86_64)
Docker 17.09.0-ce

@esabol , hemos evaluado el cambio a overlay2 después de actualizar a CentOS 7.4. Lamentablemente, es demasiado trabajo. Las particiones que podríamos usar para almacenar los datos son XFS y antes de 7.4, la opción de formato XFS predeterminada de CentOS omitía un parámetro (olvidé cuál) para poder admitir overlay2 en la parte superior. Entonces significa que tendríamos que reformatear la partición para poder usar overlay2 sobre XFS. Ahí es cuando el cambio a overlay2 nos va a costar demasiado trabajo para evitar el tiempo de inactividad, y el último kernel 7.4 + Docker 17.09 y las recomendaciones anteriores para la configuración de LVM ayudaron mucho a evitar el problema la mayor parte del tiempo.

Nota: docker info muestra una gran advertencia de que la ejecución de overlay2 sobre XFS sin estas opciones específicas no es compatible y se eliminará en una versión futura.

https://github.com/moby/moby/pull/34573 corrección lanzada en las versiones 17.09.1-ce, 17.12.0-ce

@jcberthon Hace poco docker run --rm . La gota que colmó el vaso para devmapper fue el número 20401. Cambiar a overlay2 no fue muy difícil, pero tenemos mucho espacio libre en el disco. Escribí un script para docker save todas nuestras imágenes en tarballs y otro script para docker load todos los tarballs. Terminamos en 2-3 horas. Sé que parece una molestia y puede serlo si no tienes suficiente espacio en el disco, pero creo que valdrá la pena a largo plazo. ¡Buena suerte!

Esto se corrige en 17.12.1

Gracias a todos.

antes de la versión fiexed, reiniciar el nodo físico resolverá el problema

@ravilr @KevinTHU con respecto a su comentario https://github.com/moby/moby/issues/27381#issuecomment -277148106 y https://github.com/moby/moby/issues/27381#issuecomment -267547259 He observado que cambiar el archivo de la unidad docker en RHEL a PrivateTmp=true soluciona el problema. ¿Alguna posibilidad de que hayas visto algo similar?

@MohdAhmad nunca lo he intentado, pero creo que esto tal vez esté bien, ya que PrivateTmp = true en el archivo de la unidad de la ventana acoplable es solo para la ventana acoplable, tal vez solucione este problema incluso mejor.

Encuentro el mismo problema. Porque abro la carpeta, cierro la ventana para solucionarlo.

¿Fue útil esta página
0 / 5 - 0 calificaciones