- PVSM.RU - https://www.pvsm.ru -
Источник [1] изображения
На просторах сети Интернет можно найти немало полезных утилит для Docker [2]. Многие из них принадлежат к разряду Open Source и доступны на Github. В последние два года я достаточно активно использую Docker в большинстве своих проектов по разработке программного обеспечения. Однажды начав работать с Docker, вы осознаете, что он оказывается полезен для гораздо более широкого круга задач, нежели вы изначально предполагали. Вам захочется сделать с Docker еще больше, и он не разочарует!
Docker-сообщество живет активной жизнью, ежедневно производя новые полезные инструменты. За этой бурной деятельностью достаточно сложно уследить. Поэтому я решил выбрать несколько наиболее интересных и полезных из ежедневно используемых мной Docker-утилит. Они делают работу более продуктивной, автоматизируя операции, которые пришлось бы выполнять вручную.
Давайте посмотрим на утилиты, которые помогают мне в процессе докеризации всего и вся.
Watchtower мониторит выполняющиеся контейнеры и отслеживает изменения в образах, на основе которых они были созданы. Если образ изменился, Watchtower автоматически перезапускает контейнер, используя новый образ. Это удобно при локальной разработке, если есть желание работать с самыми новыми версиями используемых инструментов.
Утилита Watchtower также поставляется в виде Docker-образа и выполняется в контейнере. Для ее запуска введите следующую команду:
Мы запустили Watchtower с примонтированным файлом /var/run/docker.sock. Это нужно для того, чтобы Watchtower мог взаимодействовать с демоном Docker через соответствующий API. Мы также передали опцию interval, равную 30 секундам, которая определяет интервал опроса. У Watchtower есть и другие опции, которые описаны в документации [4].
Давайте запустим контейнер и помониторим его с помощью Watchtower.
Теперь Watchtower начнет мониторинг контейнера friendlyhello. Если я размещу новый образ на Docker Hub, Watchtower во время очередного запуска это обнаружит. Затем она корректно остановит контейнер и перезапустит его из нового образа. Также контейнеру будут переданы указанные нами в команде run
опции, то есть он будет запущен с -p 4000:80.
По умолчанию Watchtower будет искать новые версии образов в реестре Docker Hub. При этом Watchtower может опрашивать закрытые реестры, используя для входа учетные данные из переменных окружения REPO_USER и REPO_PASS.
Более подробную информацию о Watchtower вы можете найти в документации [5].
Утилита docker-gc помогает очистить Docker-хост, удалив более не нужные образы и контейнеры. Удаляются контейнеры, завершенные более часа назад, а также образы, не принадлежащие ни одному из оставшихся контейнеров.
Docker-gc может запускаться в виде скрипта или контейнера. Мы воспользуемся вторым вариантом. Запустим docker-gc, чтобы узнать, какие контейнеры и образы можно удалить.
Чтобы docker-gc мог взаимодействовать с Docker через его API, мы подмонтировали сокет-файл Docker. Для поиска контейнеров и образов, которые можно удалить, запустим docker-gc с переменной окружения DRY_RUN=1. При этом никаких изменений на диске сделано не будет. Всегда лучше сначала убедиться, что docker-gc не собирается удалить ничего лишнего. Вот вывод этой команды:
Если вы согласны с предложенным docker-gc планом очистки, запустите ту же команду, но теперь уже без DRY_RUN.
В выводе будут перечислены удаленные docker-gc контейнеры и образы.
У docker-gc есть еще несколько опций. Чтобы получить более подробную информацию об этой утилите, рекомендую почитать соответствующую документацию [7].
Обеспокоены размером ваших Docker-образов? Вам поможет docker-slim!
Эта утилита использует статический и динамический анализ для создания легковесных вариантов Docker-образов. Чтобы поработать с docker-slim, загрузите бинарник с Github [9] (доступны версии для Linux и Mac), а затем добавьте путь к исполняемому файлу в переменную окружения PATH.
С помощью инструкции из официальной документации Docker [10] я создал образ для демонстрационного приложения friendlyhello. Размер образа составил 194 МБ.
Для очень простого приложения нам пришлось загрузить 194 МБ! Посмотрим, сколько мегабайт можно скинуть с docker-slim.
Инспектируя исходный образ, docker-slim выполнит несколько шагов, а затем создаст его облегченную версию. Посмотрим, какой в итоге получился размер:
На иллюстрации видно, что размер образа уменьшился до 24.9 МБ. Если запустить контейнер, то он будет работать точно так же, как и его предыдущая версия. Docker-slim хорошо справляется с приложениями на Java, Python, Ruby и Node.js.
Попробуйте docker-slim сами, и, возможно, это позволит вам освободить немало места. Эта утилита корректно отработала практически во всех моих проектах. Получить более подробную информацию о docker-slim можно из соответствующей документации [11].
Большинство разработчиков для сборки образов предпочитают использовать Dockerfile. Dockerfile — это декларативный способ определения команд по созданию образа, которые пользователь мог бы выполнить в командной строке.
Rocker [12] добавляет в Dockerfile набор новых инструкций. Rocker был создан в Grammarly [13] для решения проблем, с которыми эта компания столкнулась при использовании Dockerfile. В Grammarly написали содержательную статью [13], объясняющую причины создания Rocker. Если у вас есть желание лучше разобраться с Rocker, рекомендую эту статью к прочтению. В ней отмечены две проблемы:
Там также упоминается несколько добавленных Rocker инструкций. Для получения информации о всех поддерживаемых Rocker инструкциях см. документацию [14].
Rocker требует установки. Для пользователей Mac команды следующие:
Rockerfile выглядит вот так:
Для сборки образа и загрузки его на Docker Hub выполните:
У Rocker очень интересная функциональность. Чтобы узнать больше, обратитесь к его документации [14].
Я начал пользоваться ctop сравнительно недавно. Эта утилита в реальном времени отображает метрики сразу нескольких контейнеров. Если вы используете Mac, то для установки ctop можете воспользоваться следующей командой:
Для работы ctop требуется установка переменной окружения DOCKER_HOST.
Выполните ctop
, чтобы отобразить состояние всех контейнеров.
Для вывода информации только о запущенных контейнерах выполните ctop -a
.
Ctop проста в использовании и при этом весьма полезна. Более подробную информацию вы можете найти в документации [16].
Ссылки:
Автор: olemskoi
Источник [18]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/virtualizatsiya/261112
Ссылки в тексте:
[1] Источник: http://www.mrwallpaper.com/wallpapers/diving-with-whales.jpg
[2] Docker: https://xebialabs.com/plugins/docker/
[3] Watchtower: https://github.com/v2tec/watchtower
[4] документации: https://github.com/v2tec/watchtower#options
[5] в документации: https://github.com/v2tec/watchtower/blob/master/README.md
[6] Docker-gc: https://github.com/spotify/docker-gc
[7] соответствующую документацию: https://github.com/spotify/docker-gc/blob/master/README.md
[8] Docker-slim: https://github.com/docker-slim/docker-slim
[9] Github: https://github.com/docker-slim/docker-slim/releases
[10] инструкции из официальной документации Docker: https://docs.docker.com/get-started/
[11] документации: https://github.com/docker-slim/docker-slim/blob/master/README.md
[12] Rocker: https://github.com/grammarly/rocker
[13] Grammarly: https://tech.grammarly.com/blog/posts/Making-Docker-Rock-at-Grammarly.html
[14] документацию: https://github.com/grammarly/rocker/blob/master/README.md
[15] Ctop: https://github.com/bcicen/ctop
[16] документации: https://github.com/bcicen/ctop/blob/master/README.md
[17] 5 Docker Utilities You Should Know: https://blog.xebialabs.com/2017/05/18/5-docker-utilities-you-should-know/
[18] Источник: https://habrahabr.ru/post/330326/
Нажмите здесь для печати.