Составление и управление контейнерами с помощью Docker стало неотъемлемой частью современной разработки программного обеспечения. И вот недавно была выпущена новая версия Docker Engine 1706, которая включает ряд интересных новинок и улучшений. В этой статье мы рассмотрим основные особенности новой версии Docker Engine, а также поделимся некоторыми полезными советами по работе с Docker контейнерами.
Одной из самых значительных новинок в Docker Engine 1706 является поддержка многоуровневого кеширования. Теперь Docker может автоматически кешировать промежуточные образы, что значительно сокращает время сборки и развертывания контейнера. Кроме того, новая версия Docker Engine предлагает более быструю работу с Dockerfiles и улучшенное взаимодействие с другими Docker инструментами.
Новая версия Docker Engine также предоставляет улучшенную безопасность контейнеров. Теперь Docker позволяет управлять привилегиями пользователей внутри контейнера, а также предоставляет возможность использования Namespace для изоляции процессов и файловой системы. Кроме того, Docker Engine 1706 поддерживает процесс SELinux, что обеспечивает дополнительный уровень безопасности при работе с контейнерами.
Важно отметить, что Docker Engine 1706 будет последней версией, поддерживающей 32-битные операционные системы. Начиная с следующей версии, поддержка 32-битных систем будет прекращена. Поэтому рекомендуется обновить операционную систему до 64-битной версии в ближайшее время, чтобы продолжать получать обновления и поддержку от Docker.
В заключение, Docker Engine 1706 представляет собой значительное улучшение для работы с Docker контейнерами. Новые функции и дополнительные возможности делают разработку и управление контейнерами более эффективными и безопасными. Если вы регулярно работаете с Docker, рекомендуется обновиться до новой версии Docker Engine 1706 и воспользоваться всеми преимуществами, которые она предлагает.
- Новые функции и улучшения в Docker Engine 17.06
- Возможность множественной сборки образов
- Новый формат логирования
- Поддержка шифрования данных
- Советы по работе с Docker контейнерами
- Управление ресурсами
- Ограничение использования памяти и CPU
- Использование механизма масштабирования сервиса
- Вопрос-ответ:
- Что нового в выпуске Docker Engine 17.06?
- Как установить Docker Engine 17.06?
- Как управлять ресурсами в Docker Engine 17.06?
- Как обновить Docker Engine до версии 17.06?
- Видео:
Новые функции и улучшения в Docker Engine 17.06
Выпуск Docker Engine 17.06 включает в себя ряд новых функций и улучшений, которые делают работу с Docker контейнерами еще более эффективной и удобной. Некоторые из основных новых функций включают:
-
Многоузловая оркестрация: Теперь Docker Engine поддерживает масштабирование и управление контейнерами по всем оркестрационным узлам. Это обеспечивает высокую доступность и отказоустойчивость системы.
-
Улучшенная безопасность: Внедрены новые механизмы защиты, такие как автоматическое шифрование сетевого трафика между контейнерами и поддержка подписи и проверки образов Docker.
-
Управление ресурсами: Добавлена возможность ограничения ресурсов для каждого контейнера, чтобы предотвратить перегрузку вашей системы и обеспечить равномерное распределение ресурсов между контейнерами.
-
Лучшая интеграция с сетью: Улучшена поддержка IPv6, добавлена поддержка сети overlay и возможность использовать сеть вне контейнера, а также ряд других функций, которые облегчают работу с сетью контейнеров.
Это только некоторые из новых функций и улучшений, включенных в Docker Engine 17.06. Все эти новые возможности позволяют вам более гибко управлять и эффективно использовать Docker контейнеры в своих проектах.
Если вы хотите получить более подробную информацию о новых функциях и улучшениях в Docker Engine 17.06, рекомендуется ознакомиться с официальной документацией Docker.
Возможность множественной сборки образов
В новой версии Docker Engine 1706 была добавлена возможность множественной сборки образов. Это очень удобная функция, которая позволяет одновременно создавать несколько Docker образов на основе одного Dockerfile.
До этого момента, для сборки нескольких образов на основе одного Dockerfile, требовалось создавать несколько копий Dockerfile с различными именами и указывать их по отдельности при сборке. Это занимало много времени и неудобно, особенно при большом количестве образов.
Теперь же, с помощью множественной сборки, можно описать все необходимые образы и их зависимости в одном файле Dockerfile. Для этого добавляется новая инструкция MULTI-STAGE, которая определяет каждый этап сборки и указывает базовый образ для каждого этапа.
Приведем пример, который демонстрирует использование множественной сборки в Dockerfile:
-
Создаем образ, который содержит все необходимые зависимости для сборки приложения:
# Stage 1: Build the application FROM golang:1.15 AS builder WORKDIR /app COPY . . RUN go mod download RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
-
Создаем образ, который содержит только исполняемый файл app:
# Stage 2: Create the final image FROM alpine:latest WORKDIR /app COPY --from=builder /app/app . CMD ["./app"]
В данном примере мы сначала собираем все зависимости приложения в образе builder, а затем используем этот образ вторым этапом для создания конечного образа alpine:latest. Таким образом, мы получаем два образа: один сборочный, содержащий все необходимые зависимости, и второй конечный, в котором только исполняемый файл приложения.
Преимущества множественной сборки очевидны. Она позволяет сократить количество кода, улучшить читаемость Dockerfile и ускорить процесс сборки образов. Теперь Вы можете создавать и использовать несколько образов легко и быстро.
Новый формат логирования
С выпуском Docker Engine 1706 появился новый формат логирования контейнеров. Теперь Docker Engine автоматически сохраняет все выводимые в STDOUT и STDERR контейнера данные в файлы JSON. Этот новый формат позволяет более эффективно работать с логами контейнеров и предоставляет дополнительную гибкость в их обработке.
В новом формате логирования для каждого контейнера создается отдельный файл JSON, содержащий записи о событиях, происходящих внутри контейнера. В записях содержится информация о времени события, идентификаторе контейнера, уровне логирования и самом сообщении. Также в файле присутствуют дополнительные метаданные контейнера, такие как его имя, идентификатор и метки.
Для удобства обработки и анализа логов Docker Engine предлагает несколько инструментов. Например, команда docker logs позволяет просматривать логи конкретного контейнера. Ключ –follow позволяет следить за выводом логов в реальном времени.
Также Docker Engine поддерживает обратную совместимость с предыдущим форматом логирования. По умолчанию Docker Engine сохраняет логи в новом формате, но вы можете перейти обратно к предыдущему формату, установив драйвер логирования в значение “json-file”.
Поддержка шифрования данных
Начиная с выпуска Docker Engine 1706, добавлена встроенная поддержка шифрования данных. Это позволяет обеспечить безопасность хранения и передачи информации в Docker контейнерах.
Шифрование данных может быть использовано в следующих случаях:
- Хранение конфиденциальной информации в контейнерах
- Передача конфиденциальных данных между контейнерами
- Защита данных от несанкционированного доступа
Для использования шифрования данных в Docker Engine 1706 необходимо выполнить следующие шаги:
- Настройка Docker Engine для поддержки шифрования. Следует указать ключ шифрования и настроить механизм шифрования, который будет использоваться.
- Создание и запуск контейнера с использованием шифрования данных. При создании контейнера следует указать параметры шифрования, чтобы защитить данные, хранящиеся в контейнере.
- Работа с зашифрованными данными внутри контейнера. Для доступа к зашифрованным данным необходимо использовать ключ шифрования.
Важно отметить, что шифрование данных в Docker Engine 1706 обеспечивает только защиту данных в состоянии покоя (во время хранения или передачи). Шифрование данных не обеспечивает защиту от активных атак, таких как взлом операционной системы или перехват сетевого трафика.
Поддержка шифрования данных в Docker Engine 1706 открывает новые возможности для обеспечения безопасности при работе с контейнерами. Это помогает защитить конфиденциальные данные и обеспечить безопасность системы в целом.
Советы по работе с Docker контейнерами
При работе с Docker контейнерами полезно учитывать несколько советов, которые помогут вам эффективно управлять вашими контейнерами и достичь максимальной производительности:
-
Используйте официальные образы: Официальные образы Docker, доступные в Docker Hub, являются проверенными и надежными решениями. При возможности предпочтительно использовать официальные образы, чтобы быть уверенными в их качестве и безопасности.
-
Обновляйте образы регулярно: Docker обновляет и поддерживает официальные образы, поэтому рекомендуется регулярно обновлять ваши контейнеры. Это поможет обеспечить безопасность и доступность последних исправлений и улучшений.
-
Используйте volumes для хранения данных: Использование volumes позволяет сохранять данные между перезапусками контейнеров и обеспечивает устойчивость к сбоям. Рекомендуется использовать volumes для хранения данных, которые должны сохраняться при обновлении контейнеров.
-
Используйте docker-compose для управления множеством контейнеров: Docker Compose является удобным инструментом для описания и управления множеством контейнеров одновременно. Он позволяет вам легко определить зависимости между контейнерами и управлять их конфигурацией.
-
Поддерживайте контейнеров в актуальном состоянии: Убедитесь, что у вас установлена последняя версия Docker Engine и его компонентов. Регулярно проверяйте новые версии Docker и обновляйте ваше окружение, чтобы использовать последние возможности и исправления.
Следуя этим советам, вы сможете эффективно работать с Docker контейнерами и достичь максимальной отдачи от вашего окружения.
Управление ресурсами
В выпуске Docker Engine 17.06 были представлены новые возможности для управления ресурсами контейнеров. Эти новшества помогут вам более эффективно использовать ресурсы вашей хост-системы, управлять ограничениями и контролировать процессы внутри контейнеров.
1. Лимиты ресурсов
Теперь вы можете установить ограничения на использование центрального процессора (CPU) и памяти контейнерами. Это дает возможность более точно контролировать использование ресурсов каждым контейнером. Вы можете указать максимальное количество CPU и количество памяти, которые контейнер может использовать. Например, вы можете ограничить контейнеры так, чтобы они использовали не более 50% CPU или не более 1 ГБ памяти. Эти ограничения позволяют предотвратить “порчу” других контейнеров и приложений на хост-машине.
Для установки ограничений на ресурсы контейнера вы можете использовать ключи команды --cpu-shares
и --memory
. Например, чтобы ограничить контейнер в использовании CPU до 50%, вы можете указать значение --cpu-shares=512
(где 1024 – это 100% от CPU-времени на хост-машине). А чтобы ограничить использование памяти до 1 ГБ, вы можете указать значение --memory=1g
.
2. Управление нагрузкой
Вы также можете управлять нагрузкой на контейнерах. Docker Engine 17.06 предлагает новый механизм – контроль нагрузки (cgroup throttle). Этот механизм позволяет устанавливать ограничения на скорость записи и чтения данных в контейнеры. Вы можете задать ограничение на количество операций ввода-вывода в секунду или на скорость передачи данных в килобайтах в секунду. Таким образом, вы можете предотвратить слишком интенсивную работу контейнера и избежать обвала производительности остальных контейнеров на хост-машине.
Для установки ограничений на нагрузку контейнера вы можете использовать ключи команды --blkio-weight
, --blkio-read-bps
и --blkio-write-bps
. Например, чтобы ограничить скорость записи на 1мб/сек вы можеты указать значение --blkio-write-bps=/dev/sda:1mb
.
3. Масштабирование службы
В продолжение темы масштабирования, Docker Engine 17.06 предлагает новые возможности для масштабирования службы. Вы можете задать количество контейнеров для каждой службы и даже настроить автоматическое масштабирование на основе загрузки и ресурсов. Это позволяет легко управлять инфраструктурой и обеспечивает гибкость в зависимости от нагрузки.
Для масштабирования службы вы можете использовать команду docker service scale
с указанием имени службы и нового количества контейнеров. Например, для масштабирования службы app до 5 контейнеров, выполните команду docker service scale app=5
.
Данные новые возможности управления ресурсами помогут вам более эффективно использовать Docker Engine и контролировать работу контейнеров. Они позволяют предотвратить конфликты и обеспечить стабильную работу вашей инфраструктуры.
Ограничение использования памяти и CPU
В Docker Engine 1706 были введены новые возможности для управления ресурсами контейнеров, такие как ограничение использования памяти и CPU. Это позволяет установить максимальное количество ресурсов, которое контейнер может использовать, и предотвратить его излишнее потребление. Такое ограничение полезно для обеспечения равномерного распределения ресурсов между различными контейнерами и предотвращения их взаимного влияния.
Ограничение использования памяти может быть установлено с помощью опции --memory
при запуске контейнера. Например, следующая команда ограничивает доступную для контейнера память до 1 гигабайта:
docker run --memory 1g image_name
Аналогично, ограничение использования CPU может быть установлено с помощью опции --cpus
. Например, следующая команда ограничивает контейнеры до использования только половины доступных CPU (2 из 4 ядер):
docker run --cpus 2 image_name
Такие ограничения позволяют более эффективно использовать ресурсы хоста, контролировать производительность контейнеров и предотвращать их перегрузку.
Однако стоит отметить, что ограничение использования памяти и CPU может оказывать влияние на производительность запущенных в контейнере приложений. Поэтому важно тестировать и настраивать ограничения с учетом требований каждого конкретного приложения.
Использование механизма масштабирования сервиса
Для эффективного управления рабочими контейнерами Docker предоставляет механизм масштабирования сервиса. Этот механизм позволяет создавать несколько экземпляров сервиса, работающих параллельно, чтобы обеспечить высокую доступность и отказоустойчивость приложений.
Для масштабирования сервиса можно использовать команду docker service scale и указать количество экземпляров, которые вы хотите создать. Например:
$ docker service scale my-service=5
Эта команда создаст пять экземпляров сервиса с именем “my-service”. Каждый экземпляр будет работать на отдельном узле в кластере Docker.
Чтобы проверить текущее состояние масштабирования сервиса, можно использовать команду docker service ls:
$ docker service ls
Команда покажет список сервисов, их текущее состояние, количество реплик и другую информацию.
При масштабировании сервиса Docker Engine распределяет нагрузку между экземплярами сервиса. Для этого Docker Engine использует встроенный балансировщик нагрузки, который обрабатывает запросы от клиентов и направляет их к наиболее свободному экземпляру сервиса. Это позволяет распределить рабочую нагрузку и увеличить производительность приложения.
При необходимости можно изменить количество экземпляров сервиса, например, чтобы увеличить его, если требуется обработать большую нагрузку, или уменьшить его, если нагрузка снизилась. Для этого необходимо использовать команду docker service scale с новым значением количества экземпляров.
Управление масштабированием сервиса позволяет эффективно управлять ресурсами, обеспечивать высокую доступность и масштабируемость приложений в среде Docker.
Вопрос-ответ:
Что нового в выпуске Docker Engine 17.06?
Docker Engine 17.06 включает в себя несколько новых функций и улучшений. Одной из ключевых новинок является введение ограничений на использование ресурсов, что позволяет управлять доступом контейнеров к CPU и памяти. Также был добавлен новый механизм удаленного обновления Docker Engine, который позволяет более безопасно и удобно обновлять Docker на хосте. Также были внесены изменения в управление хранилищем данных и были исправлены некоторые ошибки и проблемы, обнаруженные в предыдущих версиях.
Как установить Docker Engine 17.06?
Установка Docker Engine 17.06 довольно проста. Сначала необходимо установить Docker на ваш хост. Затем, если вы используете Linux, вы можете установить Docker Engine 17.06 через пакетные менеджеры, такие как apt или yum. Если у вас есть Windows или Mac, вы можете скачать и установить Docker для Windows или Docker для Mac и Docker Engine будет установлен автоматически.
Как управлять ресурсами в Docker Engine 17.06?
В Docker Engine 17.06 добавлена поддержка ограничений на использование ресурсов контейнерами. Вы можете управлять доступом контейнеров к CPU и памяти, чтобы предотвратить их перегрузку и обеспечить более равномерное распределение ресурсов между контейнерами. Чтобы установить ограничения, вы можете использовать ключи –cpus или –memory при запуске контейнера. Например, docker run –cpus=0.5 –memory=512m.
Как обновить Docker Engine до версии 17.06?
Обновление Docker Engine до версии 17.06 процесс довольно прост и безопасен. Сначала вам необходимо установить новую версию Docker Engine, как описано в предыдущем ответе. Затем вы можете использовать новый механизм обновления, введенный в Docker Engine 17.06. Команда для обновления зависит от вашей операционной системы. Например, на Linux это может быть команда `apt-get upgrade docker-engine`. После обновления Docker Engine вам необходимо перезапустить Docker на вашем хосте, чтобы изменения вступили в силу. При этом обновление не затронет ваши существующие контейнеры и образы.