Предварительная загрузка образов докеров с ISO для распространения

Вы - верный Munin, вызывает это и не просто сообщает о проблеме, которую что-то еще вызывает? Я говорю это, потому что munin, кажется, хорошо работает, сообщая об использовании как о 130 ждущих процессах в течение большей части дня. Затем приблизительно полчаса в 2:00 обрабатывает, начинают расти, которые находятся в бесперебойном сне.

Необходимо узнать то, что продолжается в системе в это время. Если это регулярно происходит, попытайтесь запустить экран и затем сделать "ssh" к системе. Затем выполненный, "в то время как верный; сделайте PS awwlx; спите 60 сделанных". Это заставит список процессов, работающих отправляться каждую минуту. Затем, после того как это запирается снова, можно соединить назад до экрана и видеть то, чем процессы были там, идеально которые были в состоянии "D" (бесперебойный сон).

Также посмотрите на другие графики, как использование памяти и диск ввод-вывод. Диск ввод-вывод проходят крышу? Это, вероятно, делает. Использование памяти повышается? Система могла подкачивать и перегружать себя до смерти? Мое предположение было бы то, что у Вас есть некоторый процесс или процессы, которые начинают израсходовать большую память, заставляя систему подкачать себя до смерти. "PS awwlx" должен показать это, поскольку использование памяти выписано также.

Другой вещью, которую можно хотеть выполнить на экране, является "vmstat 1", который отображает строку о системном использовании каждую секунду. Из конкретного использования "подкачка" и "ЦП wa" числа.

7
задан 24 February 2017 в 00:35
3 ответа

Можно сделать это путем предварительно устанавливания /var/lib/docker дерево. Этот каталог содержит все изображения, контейнеры, и т.д. которые присутствуют в среде докера, таким образом, Вы захотите начать с чистого создавать Ваш /var/lib/docker содержащий только желаемые изображения и т.д., Когда докер запустит, он будет использовать существующую структуру каталогов, которой уже предварительно установили изображения.

0
ответ дан 2 December 2019 в 23:52

@ Ответ Майкла Хэмптона мне кажется правильным .

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

Так, например, для контейнера nginx ваш файл модуля может выглядеть так:

[Unit]
Description=nginx
After=docker.service
Requires=docker.service


[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill nginx
ExecStartPre=-/usr/bin/docker rm nginx
ExecStartPre=-/usr/bin/docker load /path/to/compressed/image
ExecStart=/usr/bin/docker run --rm [your config here]

Если вы предпочитаете сборку, а не загрузку, вы также можете сделать это, заменив:

ExecStartPre = - / usr / bin / docker load / path / to / compressed / image

С:

ExecStartPre = - / usr / bin / docker build --rm -t 'my-nginx: latest' / path / to / folder_with_Dockerfile

Вы также можно использовать зависимости systemd, чтобы гарантировать запуск вещей в правильном порядке и / или связывать контейнеры вместе (см., например, systemd After / Before , PartOf и скоро).

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

0
ответ дан 2 December 2019 в 23:52

Сохранение/загрузка Docker — это именно то, что я бы сделал здесь.

Предварительное заполнение /var/lib/docker напрямую, будь то установка пакета или копирование его с CD/DVD, кажется чрезвычайно хакерским. И это также зависит от механизма хранения, который вы используете.

Собственное сохранение/загрузка Docker — это то, как Docker любит получать изображения в локальный кэш изображений и из него, и совершенно не зависит от того, какой механизм хранения используется в установке Docker.

0
ответ дан 11 February 2021 в 19:01

Теги

Похожие вопросы