Поиск по сайту:

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


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

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

Докер Сочинить

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

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

version: 3
services:
  app:
    image: example.com/example-app:latest
    ports:
      - 80:80
  database:
    image: mysql:latest
    expose:
      - 3306
  cache:
    image: redis:latest
    expose:
      - 6379

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

Портейнер

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

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:
      containers:
        - 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 также предлагает возможности балансировки нагрузки, поддержку WebSockets, REST API, интегрированные метрики и веб-панель мониторинга, чтобы вы могли отслеживать свой трафик в режиме реального времени. Это хороший способ показать несколько общедоступных контейнеров через доменные имена с помощью одной установки Docker.

Триви

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:latest image example-image:latest

Trivy идентифицирует пакеты программного обеспечения в вашем образе, ищет уязвимости и создает отчет, содержащий идентификатор CVE каждой проблемы, серьезность и диапазон затронутых версий. Вы должны обновить каждый пакет до FIXED VERSION, указанного Trivy. Таким образом, запуск инструмента после создания образа — это простой способ повысить безопасность ваших развертываний.

Сифт

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

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

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

Погружение

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

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

Флокер

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

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

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

Докку

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

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

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

Хадолинт

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

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

hadolint Dockerfile

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

Краткое содержание

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

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




Все права защищены. © Linux-Console.net • 2019-2024