Невозможно построить докер из-за ошибки Не удалось запустить auplink перед размонтированием

Когда я запускаю docker build, я получаю это:

Sending build context to Docker daemon  10.24kB
WARN[11935] Couldn't run auplink before unmount /var/lib/docker/aufs/mnt/21647778a50f097d4535246ec5206960dd909f4bb8b0e3d04fdd53a7402fc2de-init: exec: "auplink": executable file not found in $PATH 
Step 1/2 : FROM debian:jessie
 ---> 86baf4e8cde9
Step 2/2 : RUN apt-get update
WARN[11935] Couldn't run auplink before unmount /var/lib/docker/aufs/mnt/21647778a50f097d4535246ec5206960dd909f4bb8b0e3d04fdd53a7402fc2de: exec: "auplink": executable file not found in $PATH 
 ---> Running in 1fef9bef5bf7
ERRO[11934] containerd: start container                   error="shim error: fork/exec /usr/bin/docker-runc: exec format error" id=1fef9bef5bf77141a97669d2aa785e74f9027a849919a937f714e93fbae3916d
ERRO[11935] Create container failed with error: shim error: fork/exec /usr/bin/docker-runc: exec format error 
ERRO[11934] containerd: deleting container                error="fork/exec /usr/bin/docker-runc: exec format error: \"\""
WARN[11935] Couldn't run auplink before unmount /var/lib/docker/aufs/mnt/21647778a50f097d4535246ec5206960dd909f4bb8b0e3d04fdd53a7402fc2de: exec: "auplink": executable file not found in $PATH 
shim error: fork/exec /usr/bin/docker-runc: exec format error

Вот содержимое моего Dockerfile:

FROM debian:jessie

RUN apt-get update

В чем проблема? Это не имеет смысла для меня.

ll /usr/bin | grep docker
-rwxr-xr-x  1 root   root    18471276 Aug  3 22:08 docker*
-rwxr-xr-x  1 root   root     9938352 Aug  3 22:08 docker-containerd*
-rwxr-xr-x  1 root   root     8941944 Aug  3 22:08 docker-containerd-ctr*
-rwxr-xr-x  1 root   root     3824920 Aug  3 22:08 docker-containerd-shim*
-rwxr-xr-x  1 root   root    40328816 Aug  3 22:08 dockerd*
-rwxr-xr-x  1 root   root           0 Aug  3 22:08 docker-init*
-rwxr-xr-x  1 root   root           0 Aug  3 22:08 docker-proxy*
-rwxr-xr-x  1 root   root           0 Aug  3 22:08 docker-runc*
-rwxr-xr-x  1 root   root     8962864 Aug  3 21:40 docker-volume-local-persist*

Установка с https://docs.docker.com/engine/installation/linux/docker-ce/binaries/

file $(which docker-runc):

/usr/bin/docker-runc: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=e3d80e183baf26a9d48c3f0435931d42aa1bf340, not stripped

lsb_release -a

Distributor ID: Ubuntu
Description:    Ubuntu 17.04
Release:    17.04
Codename:   zesty

докер --версия

Docker version 17.06.0-ce, build 02c1d87

докерд --версия

Docker version 17.06.0-ce, build 02c1d87

докер-контейнер --версия

containerd version 0.2.3 commit: cfb82a876ecc11b5ca0977d1733adbe58599088a

докер-контейнер-ctr --версия

ctr version 0.2.3 commit: cfb82a876ecc11b5ca0977d1733adbe58599088a

докер-инициализация --версия

tini version 0.13.0 - git.949e6fa

докер-runc --версия

runc version 1.0.0-rc3
commit: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
spec: 1.0.0-rc5

person jnbdz    schedule 07.08.2017    source источник


Ответы (2)


Это работает на 64-битной Ubuntu, отличной от Intel/ARM? Например, процессор Raspberry Pi или ARM64? Эта ошибка:

shim error: fork/exec /usr/bin/docker-runc: exec format error

Это означает, что либо (а) бинарная установка на вашем компьютере каким-то образом повреждена, либо (б) вы пытаетесь запустить бинарник для другой архитектуры в вашей системе.

Можете ли вы опубликовать вывод uname -a и file /usr/bin/docker-runc? Это может помочь сузить источник вашей проблемы.

person Phil E    schedule 07.08.2017
comment
имя-а Linux badger 4.10.0-30-generic #34-Ubuntu SMP Mon Jul 31 19:38:17 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux - person jnbdz; 09.08.2017
comment
Нет выходных данных для docker-runc - person jnbdz; 09.08.2017
comment
Я обновил свой вопрос. По какой-то причине docker-runc был пуст. В любом случае, сейчас уже не пусто. - person jnbdz; 10.08.2017
comment
Меня смущает, что в вашей файловой системе были файлы нулевой длины; есть шанс, что у вас не хватило места на диске? Заставляет меня задаться вопросом, были ли затронуты слои изображения debian:jessie, что привело к ошибкам формата exec (например, отсутствующий/поврежденный двоичный контент). Можете ли вы попробовать другой образ и сначала загрузить и запустить его для проверки? Например. docker pull alpine:latest и docker run -ti --rm alpine:latest sh? - person Phil E; 10.08.2017
comment
Это странно, потому что у меня еще много места на диске: /dev/sda1 19G 4.7G 15G 25% / Я попробую то, что вы предлагаете. - person jnbdz; 10.08.2017
comment
есть ли вероятность, что у вас закончилось место на диске? Понятия не имею. Есть ли файл журнала, который я могу проверить? - person jnbdz; 10.08.2017
comment
Прямо сейчас, когда я запускаю dockerd &, я получаю несколько предупреждений: WARN[0000] Your kernel does not support cgroup rt period, WARN[0000] Your kernel does not support cgroup rt runtime, WARN[0000] libcontainerd: client is out of sync, restore was called on a fully synced container, WARN[0000] libcontainerd: failed to retrieve container, WARN[0000] failed to cleanup ipc mounts:, failed to umount /var/lib/docker/containers/28c274e176c9c112f8bc73f6916860665c63f1407ca2670944deee7b6ae2e747/shm: invalid argument. Во всяком случае, остальные похожи. Я не знаю, поможет ли это. - person jnbdz; 10.08.2017
comment
Возможно, это связано с: serverfault.com/questions/867996/ - person jnbdz; 10.08.2017
comment
Также я запускаю хост на виртуальной машине VirtualBox/Vagrant. - person jnbdz; 10.08.2017
comment
Учитывая, что у вас были некоторые странные проблемы с файлами нулевой длины в вашей установке Docker, и, похоже, в /var/lib/docker остались какие-то ненужные вещи; Предполагая, что это тестовая виртуальная машина без какой-либо критической работы, не могли бы вы остановить демон, rm -fR /var/lib/docker, а затем снова запустить демон? Учитывая, что новый образ работает и работает, я больше не вижу никаких проблем с самим движком или docker-runc. - person Phil E; 11.08.2017
comment
WARN[0001] failed to rename /var/lib/docker/tmp for background deletion: rename /var/lib/docker/tmp /var/lib/docker/tmp-old: no such file or directory. Deleting synchronously получил это новое предупреждение. Может быть, это нормально. - person jnbdz; 11.08.2017
comment
Кажется, работает, когда я запускаю docker run hello-world. Но я все еще получаю эти предупреждения: WARN[0001] Your kernel does not support cgroup rt period и WARN[0001] Your kernel does not support cgroup rt runtime. - person jnbdz; 11.08.2017
comment
Еще одна деталь: я пытаюсь установить его с помощью apt-get. Так что это может отличаться от предыдущей бинарной установки. Позвольте мне увидеть завтра. Кстати спасибо за помощь. - person jnbdz; 11.08.2017

Это похоже на что-то связанное с aufs FS. Какую ОС вы используете? и Вы недавно обновили свою машину?

Обновление:

Для CONFIG_MEMCG_SWAP_ENABLED: missing, CONFIG_RT_GROUP_SCHED: missing and warning: /proc/config.gz does not exist, searching other paths for kernel config ...

В них отсутствует конфигурация ядра и флаги. Убедитесь, что вы установили linux-image-extra-$(uname -r) linux-image-extra-virtual. Сначала убедитесь, что вы остановили демон Docker sudo systemctl stop docker и установите эти пакеты (содержит дополнительный драйвер, поддерживающий контейнеры, и aufs check docker docs https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu) :

sudo apt-get install \ linux-image-extra-$(uname -r) \ linux-image-extra-virtual

И обновите свой grub GRUB_CMDLINE_LINUX_DEFAULT добавьте этиcgroup_enable=memory swapaccount=1 в свой файл /etc/default/grubconfiguration, затем обновите свой grub sudo update-grub проверьте https://github.com/moby/moby/issues/4250 && https://github.com/moby/moby/pull/4251

Для проблем aufs есть другое решение для современных докеров, поскольку докер перемещен с aufs на overlay, а overlay2 нужно настроить вашу машину и применить overlay, но убедитесь, что вы создали резервные копии образов и контейнеров докеров, так как это исправление может привести к их потере, проверьте Не удалось запустить службу Docker в Ubuntu 16.04

person misraX    schedule 07.08.2017
comment
Я забыл добавить извините. Я только что добавил это. Ты прав. Я установил cgroup-lite и aufs-tools. Но я все еще получаю некоторые другие ошибки. - person jnbdz; 07.08.2017
comment
Я также пытался запустить этот скрипт: raw.githubusercontent.com/ moby/moby/master/contrib/, чтобы помочь отследить проблему или проблемы. Я получаю это: CONFIG_MEMCG_SWAP_ENABLED: missing, CONFIG_RT_GROUP_SCHED: missing и warning: /proc/config.gz does not exist, searching other paths for kernel config ... - person jnbdz; 07.08.2017
comment
CONFIG_MEMCG_SWAP_ENABLED: missing -- (cgroup swap accounting is currently enabled) и CONFIG_RT_GROUP_SCHED: missing - person jnbdz; 09.08.2017
comment
Я не уверен, что мне нужно добавить linux-image-extra (askubuntu.com/questions/153023/). Я пробовал безрезультатно. - person jnbdz; 09.08.2017
comment
Да, это не обязательно, но, как я уже говорил, он содержит дополнительные драйверы. В любом случае, какая у вас версия докера? и Вы установили его из менеджера пакетов или вручную? - person misraX; 09.08.2017
comment
Из менеджера пакетов или вручную? и что на выходе file $(which docker-runc) - person misraX; 09.08.2017
comment
Я устанавливаю с docs.docker.com/engine/installation/linux /docker-ce/binaries - person jnbdz; 09.08.2017
comment
Я только что заметил, что docker-runc пуст... Очень странно. Буду заново скачивать... - person jnbdz; 10.08.2017
comment
Устанавливать из исходного кода рискованно и в этом нет необходимости, особенно когда у вас есть пакет, распространяемый вашим менеджером пакетов, который будет динамически связывать двоичные файлы, управлять версиями и зависимостями. Смонтировали ли вы cgroupfs или установили ли вы apt-get install aufs-tools cgroupfs-mount libltdl7 это зависимости для официальной установки docker-ce. - person misraX; 10.08.2017
comment
Не из исходника, а из бинарника. Он уже был скомпилирован. Я установил cgroup-lite, а не cgroupfs-mount и не libltdl7. Я установил aufs-tools. - person jnbdz; 10.08.2017
comment
Хорошо, убедитесь, что они у вас есть. монтирование cgroups важно для докера. - person misraX; 10.08.2017
comment
Только cgroupfs-mount не установлен. - person jnbdz; 10.08.2017
comment
Мне удалось запустить некоторые из моих контейнеров. Но я получаю (не знаю, связано ли это) failed to cleanup ipc mounts:, failed to umount /var/lib/docker/containers/b8335587ad37a36a35fc2f1eb57b3b3d91f61af75262eb075b9045664885ee30/shm: invalid argument, libcontainerd: client is out of sync, restore was called on a fully synced container (28c274e176c9c112f8bc73f6916860665c63f1407ca2670944deee7b6ae2e747)., libcontainerd: failed to retrieve container 28c274e176c9c112f8bc73f6916860665c63f1407ca2670944deee7b6ae2e747 state: rpc error: code = 2 desc = containerd: container not found - person jnbdz; 10.08.2017
comment
Это может относиться к: Your kernel does not support cgroup rt period, Your kernel does not support cgroup rt runtime - person jnbdz; 10.08.2017