Must read. 5 свежих англоязычных статей о Docker
Как чаще всего ошибаются в работе с Docker, чем он полезен для Deep Learning и Data Science и какие у него проблемы с безопасностью.
chinahbzyg / shutterstock
Каждую неделю мы отбираем для вас несколько свежих материалов из англоязычного интернета. В этом выпуске — самые интересные статьи о Docker, платформе для работы с контейнерами.
Docker и Kubernetes: противники или союзники?
Зачем читать: чтобы узнать больше об устройстве Docker и Kubernetes и понять, стоит ли их вообще сравнивать.
Где читать: на Imaginary Cloud.
Docker и Kubernetes — самые известные технологии для контейнеризации. Но что вообще такое контейнеризация? Это метод разработки, при котором код, все необходимые фреймворки и библиотеки работают в изолированном контейнере — независимой от внешнего мира среде. Благодаря этому приложения получаются надёжнее и мобильнее: они не привязаны к операционной системе, а неполадка в одной части не повлияет на работу остальных.
Вернёмся к Docker и Kubernetes. Обе программы нужны для работы с контейнерами, но одна ли у них цель? И да и нет. Docker нужен в первую очередь для разработки и запуска контейнеров, в то время как Kubernetes — для их организации, автоматизации и масштабирования.
Кстати, у Docker есть свой аналог k8s — Docker Swarm. Именно с ним будет корректно сравнивать Kubernetes, и, судя по звёздочкам на GitHub, Kubernetes пока уверенно побеждает. Выходит, что комбинировать его с Docker — это лучшее решение, а сами продукты скорее отлично дополняют друг друга, а не конкурируют.
7 ошибок при работе с Docker
Зачем читать: чтобы узнать, куда не надо лезть и какие решения — самые эффективные.
Где читать: на CloudSavvyIT.
Начать работу с Docker очень просто, но со временем вы заметите всё больше и больше нюансов. Вот топ самых распространённых ошибок, которые вполне могут усложнить жизнь и лишить ваши контейнеры светлого будущего:
- Обновление пакетов прямо в контейнере. Файлы в контейнерах ведут себя не так, как в обычных виртуальных машинах: изменения теряются, если контейнер перестаёт работать, а потом воспроизводятся снова из Docker-файла. Поэтому, чтобы не вышло путаницы, лучше пересобрать Docker-образ и перезапустить весь контейнер, а не обновлять пакеты внутри него.
- Несколько сервисов в одном контейнере. Суть контейнеров — в разделении. В идеале у каждого контейнера должна быть одна функция — так легче что-то поправить. Да и расширять проект — тоже.
- Побочные эффекты. Команда docker build не должна никак влиять на окружение. Её цель — это сборка образа. Будет совсем некстати, если она внезапно сделает что-то ещё.
- Слишком сложные Docker-файлы. Если файл выполняет сразу несколько разных функций, лучше разбить его на несколько файлов поменьше. Чем легче и минималистичнее файлы, тем проще с ними работать.
Ещё три ошибки — в оригинальной статье.
Секреты на просторах Docker Hub
Зачем читать: чтобы узнать о правилах безопасной работы с образами.
Где читать: на GitGuardian.
Все мы знаем, что с исходным кодом надо обращаться осторожно — чтобы не случилась утечка важной информации. Но есть и другие вещи, в которых надо проявлять бдительность и аккуратность, и одна из них — это Docker-образы. Именно на образах недавно погорели Codecov: в одном из них были данные от Git-аккаунта — хакеры использовали их, чтобы войти в закрытый репозиторий, и наворотили делов.
Проблем с безопасностью у образов несколько. Во-первых, в них содержится исходный код — причём из-за особенностей устройства образов вы можете этого не заметить во время проверок. Во-вторых, в них могут прятаться данные для авторизации и API-ключи (привет ребятам из Codecov). Ну и в-третьих, образы состоят из слоёв, что само по себе небезопасно: в одном слое может быть спрятана информация из предыдущего. А самое главное — никто их не проверяет так же тщательно, как исходный код.
Авторы статьи провели небольшое исследование на Docker Hub и попытались выяснить, сколько секретов скрывают в себе образы, а сколько — исходный код. В результате у них получилась сравнительная табличка: конечно, исходники лидируют, но и для образов результаты получились неутешительными — у 7% Docker-образов обнаружились какие-то недочёты.
Среда для работы с Data Science в Docker
Зачем читать: чтобы узнать, как использовать Docker в Data Science.
Где читать: на Refinitiv.
У Docker репутация инструмента для DevOps-инженеров, но этим его применение не ограничивается. Например, если вам интересна сфера Data Science, у Docker есть что вам предложить. А именно — практически готовое решение для разработки, Jupyter Docker Stacks. Это набор образов с приложениями Jupyter и множеством библиотек, которые устанавливаются буквально в пару кликов. Благодаря этому ваши коллеги смогут без проблем поставить точно такую же, уже преднастроенную среду — а это сэкономит немало нервов.
Конечно, это не волшебная пилюля: например, она не подойдёт любителям Eikon Data API, потому что плохо с ним совместима. Но если это не ваш случай, то в статье — целый гайд по тому, как работать с Jupyter Docker Stacks и как комбинировать его с самыми разными библиотеками, а ещё много ссылок на другие статьи по теме.
Как Docker помогает DL-специалистам
Зачем читать: чтобы узнать, как использовать Docker в Deep Learning и изучить полезные команды.
Где читать: на Medium.
Продолжая тему универсальности: Docker пригодится и в глубинном обучении. А именно — поможет организовать работу и сэкономить время.
В глубоком обучении очень важны среда и рабочее окружение. И Docker позволяет разворачивать нужную среду максимально быстро — как и в случае с Data Science: вам не придётся переживать, если вдруг понадобится перейти на новое устройство. Кроме того, у Docker хорошо построена работа с Git-репозиториями, системными файлами и GPU. А ещё тут есть изоляция контейнеров — отдельные процессы не повредят друг другу в случае неполадок.
Автор статьи подкрепил свои выводы примерами из практики и кейсами.