10 инструментов, дополняющих Docker — CloudSavvy IT

Docker — самая известная платформа для контейнеризации, но она не существует изолированно. В связи с переходом на контейнеры возникла целая экосистема дополнительных инструментов и дополнительных проектов.

Вот обзор 10 анализаторов, индексаторов и оркестраторов с открытым исходным кодом, которые делают Docker еще более удобным и полезным. Независимо от того, находитесь ли вы на раннем этапе своего пути к Docker или являетесь опытным практиком, использующим эту технологию в производстве, вы можете найти здесь что-то, что стоит включить в свой следующий проект.

Docker Compose

Docker Compose — единственный инструмент в этом списке, который фактически является частью Docker. Compose — это доступный способ создания «стопок» контейнеров Docker, которыми вы можете управлять в унисон.

Стандартный Docker CLI позволяет вам взаимодействовать с отдельными контейнерами. Compose предоставляет аналогичный интерфейс для работы с контейнерами в совокупности. Это позволяет легко управлять системами, которым требуется несколько контейнеров, например сервер приложений, база данных и уровень кэширования. Вы определяете эти компоненты как службы в файле docker-compose.yml, а затем используете двоичный файл docker-compose, чтобы запускать их все вместе:

версия: 3 службы: приложение: изображение: example.com/example-app:latest порты: — 80:80 база данных: изображение: mysql: latest expose: — 3306 cache: image: redis: latest expose: — 6379

Выполнение docker-compose up -d создаст три контейнера, по одному для приложений, базы данных и служб кеширования. Они будут автоматически связаны друг с другом. Это гораздо более управляемо, чем многократное повторение команды docker run.

Portainer

Portainer — это графический интерфейс для вашей установки Docker. Это инструмент на основе браузера, который предлагает полный интерфейс для просмотра, создания и настройки ваших контейнеров. Вы также можете взаимодействовать с другими типами объектов Docker, такими как изображения, сети и тома.

Панель управления Portainer

Portainer развертывается как собственный образ Docker:

docker run -d -p 9000: 9000 —name = portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data: / data portainer / portainer-ce

Это устанавливает экземпляр Portainer, к которому вы можете получить доступ по адресу localhost: 9000. Он работает путем установки сокета Docker вашего хоста в контейнер Portainer. Таким образом, Portainer может использовать сокет для управления контейнерами, запущенными на вашем хосте.

Губернаторы

Kubernetes — это платформа для распределенной оркестровки контейнеров. Это распространенный способ переноса Dockerized рабочих нагрузок в производственную среду. Кластер Kubernetes состоит из нескольких узлов (физических машин), каждый из которых может размещать экземпляры контейнера.

Kubernetes обеспечивает простое масштабирование и распространение. В то время как простой Docker предоставляет отдельные контейнеры на одной машине, Kubernetes управляет несколькими контейнерами, которые беспрепятственно работают на нескольких узлах.

Поскольку Kubernetes совместим с OCI, вы можете развернуть существующие образы Docker в своем кластере:

apiVersion: apps / v1 kind: Deployment spec: replicas: 3 selector: matchLabels: app: example template: metadata: labels: app: example spec: container: — name: example image: example.com/example-image:latest ports: — containerPort: 80 kubectl apply -f deployment.yml

В этом примере создается развертывание Kubernetes образа example.com/example-image:latest. Поле replicas: 3 означает, что у вас будет три экземпляра контейнера, обеспечивающие избыточность для вашей системы. Развертывание аналогично запуску docker run -d -p 80:80 example.com/example-image:latest, хотя при этом запускается только один контейнер.

Движение

Traefik — это обратный прокси-сервер HTTP, который легко интегрировать с рабочими нагрузками контейнеров. Он автоматически перенастраивает себя с новыми маршрутами при создании и удалении контейнеров.

Traefik позволяет прикреплять ярлыки к контейнерам для определения доменных имен и поведения пересылки. Программа будет создавать соответствующие прокси-маршруты каждый раз, когда контейнер с соответствующими метками присоединяется к сети Traefik.

Веб-интерфейс TraefikДвижение

Traefik также предлагает возможности балансировки нагрузки, поддержку WebSockets, REST API, интегрированные метрики и веб-панель управления, чтобы вы могли отслеживать свой трафик в режиме реального времени. Это хороший способ предоставить доступ к нескольким общедоступным контейнерам через доменные имена с помощью одной установки Docker.

Trivy

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

Trivy доступен как собственный образ Docker. Вы можете запустить простое сканирование изображения example-image: latest, используя следующую команду:

docker run —rm -v trivy-cache: /root/.cache/ -v /var/run/docker.sock:/var/run/docker.sock aquasec / trivy: последнее изображение пример-изображение: последнее

Скриншот банального репортажа

Trivy идентифицирует программные пакеты в вашем образе, ищет уязвимости и создает отчет, содержащий идентификатор CVE каждой проблемы, серьезность и диапазон затронутых версий. Вам следует обновить каждый пакет до ФИКСИРОВАННОЙ ВЕРСИИ, указанной Trivy. Таким образом, запуск инструмента после создания образа — простой способ повысить безопасность ваших развертываний.

Syft

Syft генерирует SBOM (спецификацию программного обеспечения) из образов Docker. Это списки всех пакетов ОС и зависимостей языков программирования, включенных в образ.

Syft поможет вам провести аудит цепочки поставок программного обеспечения. Docker позволяет легко ссылаться на удаленный контент и разбивать сложные файловые системы на несколько слоев, даже не осознавая этого. Пользователям вашего изображения еще сложнее понять, что находится внутри.

Недавние громкие атаки продемонстрировали, что слишком длинные цепочки поставок программного обеспечения представляют собой серьезную угрозу. Запуск Syft для ваших образов позволяет вам получать информацию об их составе, позволяя оценить, можете ли вы удалить некоторые пакеты или переключиться на более минимальный базовый образ.

Нырять

Что касается связанной темы, Dive упрощает проверку файловой системы образов Docker. По умолчанию изображения довольно непрозрачны, поэтому обычно запускают контейнер, чтобы выяснить, что находится внутри. Это может поставить вас под угрозу, если образ содержит вредоносный процесс.

Dive позволяет вам перемещаться по файловой системе изображения, используя интерактивное древовидное представление в вашем терминале. Вы также можете просматривать отдельные слои, чтобы увидеть, как было построено изображение. Просмотр только изменений в одном слое помогает визуализировать изменения, применяемые на каждом этапе сборки, даже если у вас нет доступа к исходному Dockerfile.

Флокер

Flocker — это менеджер томов, который сочетает в себе управление контейнерами и их постоянными данными. Он поддерживает среды с несколькими хостами, упрощая перенос томов между хостами по мере перепланирования контейнеров.

Такая переносимость гарантирует, что тома будут доступны везде, где есть контейнеры. Традиционные тома Docker не могут покинуть хост, на котором они созданы, что заставляет ваши контейнеры также оставаться в стазисе.

Поддержка распределенного хранилища упрощает перенос контейнеров в производство. Flocker идеально подходит для контейнеров с отслеживанием состояния, которые необходимо масштабировать в распределенных средах, сохраняя при этом совместимость с различными механизмами хранения. Он поддерживает серверные части, включая Amazon EBS, Google GCE и OpenStack Block Storage.

Докку

Dokku использует Docker, чтобы вы могли самостоятельно разместить свою собственную платформу как услугу (PaaS). Он автоматически запускает контейнеры Docker, когда вы отправляете код с помощью Git.

В качестве полноценной платформы приложений Dokku позволяет отображать домены, добавлять SSL, развертывать несколько сред через ветки Git и настраивать вспомогательные службы, такие как базы данных. Это отличная альтернатива коммерческим платформам, таким как Heroku и Firebase, которая позволяет вам поддерживать производственные развертывания на собственном оборудовании.

Настройка сервера Dokku позволяет запускать приложения в изолированных контейнерах, не изучая всех тонкостей ручного управления контейнерами. Вы можете сконцентрироваться на написании и фиксации кода, используя установленные рабочие процессы на основе Git. Добавление вашего сервера Dokku в качестве удаленного Git означает, что вы можете использовать git push для развертывания ваших изменений либо локально в вашем терминале, либо как часть конвейера CI.

Hadolint

Hadolint — это линтер Dockerfile, который проверяет, соответствуют ли этапы сборки рекомендуемым передовым методам. Запуск Hadolint может выявить распространенные проблемы конфигурации, которые делают ваши сборки медленнее и менее безопасными. Hadolint внутренне использует ShellCheck, чтобы также помещать сценарии оболочки в инструкции RUN вашего Dockerfile.

Вы можете загрузить Hadolint в виде предварительно скомпилированного двоичного файла, попробовать его в Интернете или использовать собственный образ Docker, hadolint / hadolint. Начните сканирование, указав путь к Dockerfile бинарному файлу Hadolint:

хадолинт Dockerfile

Hadolint просканирует ваш Dockerfile на предмет проблем и представит результаты в вашем терминале. Некоторые из связанных правил включают проверку абсолютных путей WORKDIR, обязательное использование уникальных псевдонимов COPY —from и отказ от переключения на пользователя без полномочий root до конца файла Dockerfile. Регулярный запуск Hadolint позволит создавать более безопасные и производительные образы, соответствующие стандартам сообщества.

Резюме

Docker — отличный инструмент для разработчиков, но он становится еще лучше в сочетании с другими популярными проектами. Инициативы сообщества могут повысить безопасность ваших образов, помочь вам выявлять проблемы в ваших файлах Docker и предоставить универсальные графические интерфейсы для управления вашими контейнерами.

Новые инструменты появляются постоянно, поэтому стоит просматривать сайты обмена кодом, такие как GitHub, чтобы узнать о предстоящих проектах. Тема Docker — хорошая отправная точка для вашего исследования.

Похожие записи

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

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