Какие другие ограничения ресурсов докера, помимо процессора и памяти?

Я запускаю два контейнера докеров vm1 и vm2 с одним и тем же образом докера. Оба могут работать успешно по отдельности. Но не может работать в то же время. Я проверил процессор и память. Какой еще ресурс ограничивал докер для запуска нескольких контейнеров?

systemctl status docker результат только при запуске vm1.

   Tasks: 148
   Memory: 357.9M

systemctl status docker результат только при запуске vm2.

   Tasks: 140
   Memory: 360.0M

Моя система по-прежнему содержит около 4 ГБ свободной оперативной памяти, процессоры тоже простаивают. Когда я запускаю vm1, а затем vm2, vm2 завершается с ошибкой с некоторым журналом, например:

[17:55:50.504452] connect(172.17.0.2, 2889) failed: Operation now in progress 

И другой журнал, как

/etc/bashrc: fork: retry: Resource temporarily unavailable

systemctl status docker результат при запуске 'vm1', а затем 'vm2'.

   Tasks: 244
   Memory: 372.2M

Команда запуска докера vm1

  exec docker run --rm -it --name vm1
    -e OUT_IP="$MYIP" \
    -h vm1 \
    -v /MyLib/opt:/opt:ro \
    -v /home/myid:/home/guest \
    -v /sybase:/sybase \
    -v /sybaseDB:/sybaseDB \
       run-image $*

Команда запуска докера vm2

  exec docker run --rm -it --name vm2
    -e OUT_IP="$MYIP" \
    -h vm2 \
    -v /MyLib/opt:/opt:ro \
    -v /home/myid:/home/guest \
    -v /sybase2:/sybase \
    -v /sybaseDB2:/sybaseDB2 \
       run-image $*

Некоторый результат команды в соответствии с: fork: retry: Ресурс временно недоступен

# in host os
$ sysctl fs.file-nr
fs.file-nr = 4064 0 814022

# in docker container (vm2)
$ sudo su - guest
$ ulimit -Hn
1048576
$ sudo lsof -u guest 2>/dev/null | wc -l
230

Пользователь запуска докера — «гость», но я запускаю программу под учетной записью пользователя «ap» через sudo. Я обнаружил, что результат «ulimit -u» внутри контейнера отличается, образ запуска основан на centos: 6

$ sudo su - guest
$ ulimit -u
unlimited
$ sudo su - ap
$ ulimit -u
1024

person Daniel YC Lin    schedule 12.04.2018    source источник
comment
Не могли бы вы добавить 2 разные команды docker run ..., которые вы используете?   -  person tgogos    schedule 12.04.2018
comment
Дикое предположение, но поскольку ваши образы докеров одинаковы и возникает ошибка подключения, может быть, оба пытаются подключиться к одному и тому же сокету? Это определенно потерпит неудачу.   -  person emmrk    schedule 12.04.2018


Ответы (1)


В моем случае я обнаружил, что результат вызван тем, что ulimit по умолчанию пользователя «ap» -u составляет всего 1024. При запуске только vm1 или vm2 количество процессов/потоков пользователя «ap» меньше 1024. Когда я запускаю как vm1, так и vm2 , общее количество процессов превышает 1024.

Решение состоит в том, чтобы увеличить ограничение пользователя nproc по умолчанию для centos 6:

sudo sed -i 's/1024/4096/' /etc/security/limits.d/90-nproc.conf
person Daniel YC Lin    schedule 17.04.2018