2016-12-16 3 views
-1

Я новичок в докеров и имею проблемы с существующими сценариями, которые работают на одной машине, но не с другой. Я готов прочитать документацию и существующие ответы, но немного потерял на многих уровнях абстракции в этой теме.docker out of memory

Запуск приложения в докере приводит к исключению из памяти. Я начинаю докер с --ulimit memlock -1:-1, и никакие другие ограничения на память, похоже, не применяются.

df -h внутри урожайности докеров

[email protected]localhost:/# df -h 
Filesystem                       Size Used Avail Use% Mounted on 
/dev/mapper/docker-253:0-1312128-9219e5dbff0bc6da3a663fab31ec34e6f6b28ba6c8fbd3b343d9131d41f6b1c9 10G 3.0G 7.1G 30%/
tmpfs                        3.9G  0 3.9G 0% /dev 
tmpfs                        3.9G  0 3.9G 0% /sys/fs/cgroup 
/dev/mapper/fedora-root                    50G 20G 28G 42% /etc/hosts 
/dev/mapper/fedora-home                   401G 151G 231G 40% /var/results 
shm                         64M  0 64M 0% /dev/shm 

Когда происходит ООМ, первая файловая система используется до 95%. Откуда этот лимит 10G? Где я могу его настроить?

Все перегородки моего устройства, безусловно, имеют достаточно свободного места.

[[email protected] RegressionTesting]$ docker info 
Containers: 2 
Running: 1 
Paused: 0 
Stopped: 1 
Images: 52 
Server Version: 1.10.3 
Storage Driver: devicemapper 
Pool Name: docker-253:0-1312128-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: 12.17 GB 
Data Space Total: 107.4 GB 
Data Space Available: 32.16 GB 
Metadata Space Used: 7.889 MB 
Metadata Space Total: 2.147 GB 
Metadata Space Available: 2.14 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. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning. 
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata 
Library Version: 1.02.122 (2016-04-09) 
Execution Driver: native-0.2 
Logging Driver: journald 
Plugins: 
Volume: local 
Network: bridge null host 
Kernel Version: 4.8.12-200.fc24.x86_64 
Operating System: Fedora 24 (Twenty Four) 
OSType: linux 
Architecture: x86_64 
Number of Docker Hooks: 2 
CPUs: 8 
Total Memory: 7.787 GiB 
Name: localhost.localdomain 
ID: YXHN:34PG:ZQA3:P4DU:4TFY:6THC:VFI2:E7BE:IGOW:2TTH:3BS7:3OOD 
Registries: docker.io (secure) 
+2

Почему вы используете 'df' внутри контейнера докера, когда ошибка является OOM? Эти два в основном не связаны – jaxxstorm

+0

Приложение, запущенное внутри контейнера, дает OOM. Поэтому я подозреваю, что контейнер достигает своего предела –

+2

Вы имеете в виду «память» или «дисковое пространство»? – Henry

ответ

0

Где этот предел 10G взялось?

Это происходит из dockerd (демон), которые создают специальный «устройство» размер 10G по умолчанию для нового контейнера

Где я могу настроить его?

Вы можете установить его, предоставляя --storage-opt dm.basesize=50G к dockerd является случаем драйвера хранения devicemapper

PS: на самом деле, ОЫЙ не вызывают дисковое пространство, но память, я думаю
И есть два возможных причины:

  • вы из реальной памяти. Затем используйте free -m на хост-машине докера, чтобы посмотреть его. Контейнер использует ту же память, что и хост с докером.

  • вы выходите из общей памяти. Не уверен в OOM, но докер установлен/dev/shm до 64M по умолчанию. Не подходит для некоторых приложений