Заметки по docker

Как свести занимаемое на диске место к минимуму

Во-первых, docker по-умолчанию не беспокоится о том, сколько места на диске занимают необходимые ему данные. Большинсво команд оставляют за собой кучу следов, копиируя или изменяя текущие данные образа и не удаляя предыдущую версию. Давайте рассмотрим наиболее популярные:

  • Команды docker pull и docker build создают новые образы. Каждое изменение создает новый слой и кешируется, использует aufs для хранения, таким образом увеличивая занимаемое на диске место. Но при этом предыдущая версия/слой никуда не удаляются, и остаются болтаться бесполезным грузом.Удалить такие неиспользуемые образы, у которых нет метки, можно выполнив в консоли:

    можно добавить в cron и неиспользуемые image будут удалятся автоматически.
  • В целом docker очень прожорлив не только касательно дискового пространства, а также использования inode (df -i). Также добавляем в наш крон, для очистки пространства:
  • Все равно мало место, еще вот так:

Копирование контейнта из docker контейнера на HN

Копирование контейнта в docker контейнера с HN

То же можно сделать и наоборот – скопировать локальный файл с хоста – в контейнер:

Перезагрузка сервиса в контейнере

Рассмотрим на примере nginx. Поднят контейнер, использующий оффициальный nginx образ, в случаи необходимости перечитать конфиг используется следующая команда:

Обновить параметры restart

Очистка stdout docker контейнера

docker хранит весь stdout в файлах <ID>-json.log (/var/lib/docker/containers/*/*-json.log) и со времинем размер лог файлов становиться очень большим есть быстрый способ их очистки, если вы еще не добавили в logrotate 😉

Отключить вывод логов

для compose

Сделать контейнер всегда запущенным

Dockerfile:

 

не проверено:

docker внутри контейнера lxc

файл конфига lxc конейнера /etc/pve/lxc/10041.conf

также выполняем для нужного конейнера

logrotate для логов docker контейнера

nano /etc/logrotate.d/docker-logs

Войти в последний слой при неудачной сборке

 

 

 

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *