Сборка Docker --ulimit flag не имеет никакого эффекта - PullRequest
0 голосов
/ 20 сентября 2018

Мои сборки Docker терпят неудачу из-за ошибки ограничения дескриптора файла.Они вылетают с

Error: EMFILE: too many open files

, когда я проверяю ulimit -n на контейнере, я вижу

-n: file descriptors 1024

Так что я передаю следующеефлаги для моей команды сборки

docker build --ulimit nofile=65536:65536 -t web .

но это ничего не меняет, мой контейнер по-прежнему показывает

-n: file descriptors 1024

Независимо от того, что яМне кажется, я не могу изменить предел дескриптора файла ulimit.

Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Итак, я обнаружил причину.Публикация ответа в том случае, если у кого-то еще возникла та же проблема, что и я потратил большую часть дня на это.Я отлаживал очень долгую сборку и использовал

export DOCKER_BUILDKIT=1

, чтобы включить некоторую расширенную информацию о сборке.Очень полезные тайминги и т. Д., Хотя кажется, что включение DOCKER_BUILDKIT полностью игнорирует флаги ulimit, передаваемые команде сборки docker.
Когда я устанавливаю

export DOCKER_BUILDKIT=0

, это работает.Короче говоря, избегайте использования buildkit с параметрами ulimit

0 голосов
/ 20 сентября 2018

Я написал простой тест, и он отлично работает на Docker 18.06

> $ docker -v
Docker version 18.06.1-ce, build e68fc7a

Я создал Dockerfile вот так:

FROM alpine
RUN ulimit -n > /tmp/ulimit.txt

А потом:

> $ docker build --ulimit nofile=65536:65536 .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM alpine
 ---> e21c333399e0
Step 2/2 : RUN ulimit -n > /tmp/ulimit.txt
 ---> Running in 1aa4391d057d
Removing intermediate container 1aa4391d057d
 ---> 18dd1953d365
Successfully built 18dd1953d365

docker run -ti 18dd1953d365 cat /tmp/ulimit.txt
65536

> $ docker build --ulimit nofile=1024:1024 --no-cache .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM alpine
 ---> e21c333399e0
Step 2/2 : RUN ulimit -n > /tmp/ulimit.txt
 ---> Running in c20067d1fe10
Removing intermediate container c20067d1fe10
 ---> 134fc7252574
Successfully built 134fc7252574

> $ docker run -ti 134fc7252574 cat /tmp/ulimit.txt
1024
...