Просто хочу скачать. Обязательные для изучения материалы
Скачать 1.7 Mb.
|
Добавление «секрета» к уже работающему сервису К сожалению, для того, чтобы добавить секрет к сервису, последний придется пересоздать, предварительно выполнив команду: $ docker service rm docker_secrets_example Обновление «секретов» для сервиса Также к сожалению, для того, чтобы обновить секрет у сервиса, его придется пересоздать. Заключение В этой статье мы рассмотрели еще одну возможность Docker, предназначенную для безопасной работы с чувствительными данными ваших приложений. Если у вас возникли какие-либо вопросы, буду рад ответить на них в комментариях в конце статьи. Docker: решения для хранения образов - Андрей Максимов 0 комментариев На сегодняшний день ни одно решение, построенное на основе или просто использующее Docker, не обходится без хранилища Docker образов (images). Такие хранилища делятся на публично доступные и приватные. Публично доступные хранилища Quay.io — это хранилище образов Docker от CoreOS , который продвигает себя как имеющие «продвинутые триггеры для сборки», «расширенные возможности по управлению привилегиями для команды» и «безопасное хранилище». В настоящий момент из публично доступных решений Quay является наиболее дружественным для использования Enterprise компаниями. Quay поддерживает любой сервер git, а также позволяет легко создавать сложные рабочие процессы, например, отображение названий веток git в теги Docker. Таким образом, когда вы делаете коммит вашего кода, правильно протегированный Docker образ будет создан автоматически. Quay предоставляется как публичное решение или же как частная инсталляция. Публичное решение предлагает неограниченное количество бесплатных публичных репозиториев, за приватные репозитории вашей организации придется заплатить. Docker Hub является собственным предложением компании Docker. Как и у Quay он предлагает неограниченное количество бесплатных публичных репозиториев и не взимает плату за хранение или пропускную спо собность. Если вам нужны частные репозитории, они оплачиваются на основе нужного вам количества и количества параллельных сборок. Docker Hub не предлагает возможности гранулярного управления полномочиями, как это сделано у Quay, что может быть проблемой для большего количества Enterprise компаний. Docker Hub также имеет более ограниченную интеграцию git, требуя, чтобы ваш код жил на GitHub или Bitbucket, если вы хотите воспользоваться автоматизированной сборкой. Стоит отметить, что Docker Hub — это основной реестр используемый вами, когда вы выполняете команду docker push или docker pull. AWS EC2 Container Registry (ECR) — это относительно новый сервис от Amazon AWS, использовать который имеет смысл только в том случае, если вы уже используете или собираетесь использовать какие-либо другие сервисы от Amazon AWS, например, Elastic Container Service . ECR может быть использован как любое другое хранилище образов Docker, но максимальную пользу из него можно извлечь только используя его совместно с другими продуктами Amazon AWS. Как и большинство других сервисов от AWS, ECR также позволяет очень гибко регулировать уровень доступа и привилегии. Одна из наиболее важных особенностей ECR в том, что его ценовая политика сильно отличается от Quay и Docker Hub. Вместо того, чтобы брать оплату за количество приватных репозиториев, это решение оплачивается строго по объему занятого стораджа и уровня утилизации сети. Google Container Registry — этот репозиторий очень похож на Amazon ECR, только он тесно интегрирован в инфраструктуру облачных сервисов Google. Точно так же его имеет смысл использовать только если часть вашей инфраструктуры будет использовать облачные услуги Google, например, Kubernates. Ценообразование также похоже на ECR, т.е. вы платите только за объемы хранимых Docker образов и исходящий сетевой трафик. У данного решения как и у всего облака Google приоритет прежде всего на безопасность, поэтому все пока что не очень удобно, зато очень и очень безопасно. Если вам нужна возможность автоматизировать ваши процессы разработки, тестирования и релизов, скорее всего вам пока не сюда. Решения для организации частных приватных репозиториев Docker Registry 2.0 — Открытая версия репозитория, который использует Docker для организации своего Docker Hub . Документация на него более, чем исчерпывающая. Возможно все, но это «все» надо настраивать: отказоустойчивость, аутентификацию из правильного источника и само собой управление пользователями. Никакого Web-интерфейса из коробки. Выбирать это решение стоит только если вы готовы потратить какое-то значительное количество времени на «допиливание» этого решения. В противном случае, у Docker можно купить цельное решение для построения контейнерной инфраструктуры Docker Datacenter Atomic Registry (RedHat) — Откр ытая версия репозитория от RedHat, выполненная на базе одного из проектов OpenShift. Распространяется в виде образов виртуальных серверов, которые можно скачать и запустить в любом Облаке, среде виртуализации или физическом железе. Разработчики хвалят это решение за то, что оно изначально спроектировано для кластеризации и отказоустойчивой работы, красивый Web-интерфейс, а также поддержку SSO и RBAC, что позволяет встроить этот репозиторий в собственную инфраструктуру. Документация достаточная, но далеко не исчерпывающая. Запустив ВМ из образа с этим решением, очень легко понять насколько оно будет вам полезно. На основной странице проекта есть 2 видео, показывающие как поставить и как начать использовать это решение. Harbor (VMware) — еще один открытый репозиторий, сделавший ставку на Enterprise компании, реализовав RBAC, репликацию образов между узлами кластера для лучшей балансировки нагрузки, поддержку AD\LDAP, аудитный журнал операций, красивый Web- интерфейс, переведенный на несколько языков, включая русский, REST API и удобный механизм развертывания (виртуальная машина для vSphere в формате OVA). Portus (Suse) — Открытая версия репозитория от Suse. Чуть менее выдающийся Web-интерфейс, чем у предшественников, все те же реализованные RBAC, интеграция с LDAP, аудит операций, тегирование репозиториев, возможность включить пользователям возможность самостоятельной регистрации с последующей модерацией. Это решение очень простое и понятное. Sonatype Nexus Repository Manager 3.0 OSS — Еще один интересный репозиторий, который я доба вляю в этот список уже после того, как статья была опубликована. Это решение позволяет создавать не только репозитории для хранения образов Docker, но в добавок поддерживает и позволяет вам создавать репозитории bower, maven2, npm, nuget, pipi и rubygems. Помимо всего прочего это решение может быть интегрировано с LDAP, позволяет очень гибко разграничивать права доступа пользователей к различным репозиториям, а всю настройку можно легко выполнить в удобном Web-интерфе. Решение абсолютно бесплатное. Quay.io Enterprise — Частная инсталляция Quay для установки на площадке и оборудовании конечного заказчика характеризуется возможностью настройки отказоустойчивого режима работы всех компонентов, входящих в состав решения, возможностью организации гео-репликациии образов Docker между датацентрами, возможностью строить процесс непрерывной интеграции, возможностью подключать сканер безопасности образов, например, Clair , упоминавшийся в статье Docker: проверка контейнеров на безопасность , а также возможность использования LDAP в качестве сторонней базы учетных записей пользователей. Полный список возможностей можно посмотреть тут Artifactory — Наверное, самое странное и дорогое решение для хранения образов Docker. Не смотря на то, что это решение можно использовать как SaaS, большинство известных мне компаний успешно используют этот продукт все же в виде отдельной частной инсталляции. Вообще говоря, изначальное назначение этого программного продукта было далеко не хранение образов Docker, однако, с какого-то момента «теперь ваш бинарный репозиторий для хранения артефактов разработки еще и Docker образы хранить умеет». По материалам • An Overview of Docker Registries • Comparing Four Hosted Docker Registries • Awesome Docker GitHub repository • Deploying a private, secured Docker Registry within 15 minutes Установка приватного Docker репозитория - Андрей Максимов 0 комментариев В этой статье будет рассмотрено как быстро и легко установить собственный приватный Docker репозиторий. Приватный Docker репозиторий может понадобиться вам скорее всего только в одном случае: ограничение доступа к Docker образам периметром вашей организации. В остальных случаях можно пользоваться любыми публично доступными репозиториями. В качестве решения для организации приватного репозитория мы будем использовать Sonatype Nexus Repository Manager 3.0 OSS . А запускать необходимый контейнер из его образа мы будем при помощи Docker Compose ( кратко о Docker Compose ). Для того, чтобы это сделать, создайте в месте, где вы обычно работаете над собственными проектами директорию, например, nexus3, а внутри нее директорию data и файл docker-compose.yml: $ mkdir -p nexus3/data $ touch nexus3/docker-compose.yml $ tree nexus3/ nexus3/ ├── data └── docker-compose.yml 1 directory, 1 file Содержимое docker-compose.yml будет следующим: nexus : image : sonatype/nexus3:latest ports : - "8081:8081" - "8123:8123" volumes : - ./data:/nexus-data В этой конфигурации мы пробрасываем 2 порта до контейнера: • 8081 — для Web-UI интерфейса • 8123 — API интерфейс для Docker реестра Также мы монтируем директорию data текущей директории nexus3 внутрь контейнера (в директорию /nexus-data) для сохранения состояния контейнера при его перезапусках. При использовании в продуктивной инсталляции вы можете использовать Docker диск (volume), расположенный на NAS или распределенной файловой системе, т.к. GlusterFS, например. Запуск Docker реестра (Nexus) Для запуска реестра, как обычно, необходимо выполнить команду docker-compose up с ключем -d для того, чтобы терминал вернул вам управление: $ docker-compose up -d Первый запуск Nexus займет какое-то время. Понять, что реестр корректно запустился можно будет по выводу команды docker-compose logs: $ docker-compose logs Как только контейнер успешно запустится, вывод команды будет оканчиваться следующими строчками: nexus_1 | ------------------------------------------------- nexus_1 | nexus_1 | Started Sonatype Nexus OSS 3.2.0-01 nexus_1 | nexus_1 | ------------------------------------------------- Создание Docker репозитория Как только контейнер с Nexus запустится, вы можете подключиться к Docker Engine на порт 8081. В моем случае (OS X, Docker for Mac) — это адрес . Для того, чтобы настроить репозиторий, необходимо зайти под учетной записью администратора (меню «Sign In» в верхнем правом углу экрана): Учетная запись администратора: • Логин: admin • Пароль: admin123 После прохождения процедуры аутентификации, зайдите в настройки: Выберите «Repositories» Нажмите на кнопку «Create repository«: В списке доступных репозиториев выберите «docker (hosted)«: Укажите имя репозитория (Name), выставьте порт 8123 (второй экспортированный порт в docker- compose.yml), а также поставьте галочку «Allow clients to use the V1 API to interact with this Repository«, если вам нужна поддержка протокола репозитория V1: Нажмите на кнопку «Create repository«, чтобы сохранить изменения. Поздравляю, вы только что установили ваш приватный репозиторий на Nexus! Работа с приватным репозиторием Подключение к приватному репозиторию Для того, чтобы подключиться к вашему только что созданному репозиторию, выполните команду: $ docker login -u admin -p admin123 127.0.0.1:8123 Login Succeeded Напомню, что 127.0.0.1 — адрес моего Docker Engine, на котором запущен мой контейнер. Сохранение Docker образа в приватный репозиторий Сохранение образа будет демонстрироваться на базе образа nginx:latest. Если такого образа в вашем репозитории нет, выполните команду: $ docker pull nginx:latest Для того, чтобы сохранить ваш образ в приватном репозитории, необходимо так же как и в публичном создать для него тег. Для этого выполните следующую команду: $ docker tag nginx:latest 127.0.0.1:8123/my_nginx:latest После этого можно смело сохранять образ: $ docker push 127.0.0.1:8123/my_nginx:latest The push refers to a repository [127.0.0.1:8123/my_nginx] 7d530616ebc2: Pushed db07381cb585: Pushed a2ae92ffcd29: Pushed latest: digest: sha256:a5a0cadd0a8a9d2f42c0cd03a55cd0c610f6cc1466a6f9f9f96b4ae6513e9907 size: 948 Также сохраненный образ можно увидеть в Web-интерфейсе репозитория, перейдя в меню «Components» и выбрав ваш созданный репозиторий: Загрузка Docker образа из приватного репозитория Для того, чтобы скачать необходимый образ из приватного репозитория необходимо пройти на нем аутентификацию и выполнить команду docker pull: $ docker login -u admin -p admin123 127.0.0.1:8123 $ docker pull 127.0.0.1:8123/my_nginx:latest На сегодня все. Успехов с Docker! Обновление Docker - Андрей Максимов 0 комментариев Одна из самых частых и важных операций в IT — это своевременное обновление программного обеспечения. Обновление Docker не исключение. Узнать актуальную версию установленного на физическом или виртуальном сервере Docker можно при помощи команды $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS builder.avmaksimov.ru - generic Running tcp://81.23.10.76:2376 v1.12.3 default - virtualbox Running tcp://192.168.99.100:2376 v1.12.1 manager-1.avmaksimov.ru - generic Running tcp://185.12.28.58:2376 v1.12.3 manager-2.avmaksimov.ru - generic Running tcp://185.12.28.7:2376 v1.12.3 manager-3.avmaksimov.ru - generic Running tcp://185.12.28.39:2376 v1.12.3 node-1.avmaksimov.ru - generic Running tcp://81.23.10.217:2376 v1.12.3 node-2.avmaksimov.ru - generic Running tcp://185.12.28.80:2376 v1.12.3 node-3.avmaksimov.ru - generic Running tcp://185.12.29.107:2376 v1.12.3 vpn.avmaksimov.ru * digitalocean Running tcp://45.55.235.195:2376 v1.12.4 Как видно из вывода команды самая новая версия Docker установлена на моей виртуальной машине, находящейся в Облаке DigitalOcean (v1.12.4). В Облаке КРОК у меня развернут Swarm кластер на версии Docker v1.12.3. И самая старая версия Docker установлена на моем ноутбуке в VirtualBox-е (v1.12.1). Именно ее мы сейчас и обновим. Важно! Помните о том, что при обновлении Docker происходит перезагрузка сервиса Docker управляющего всеми запущенными на вашем хосте контейнерами. При этом все контейнеры на обновляемом хосте будут остановлены и перезапущены автоматически только в том случае, если у них настроена политика автоматической перезагрузки. Проверить политику автоматической перезагрузки можно при помощи команды $ docker inspect -f {{ .HostConfig.RestartPolicy.Name }} 'ID вашего контейнера'; Установить политику перезагрузки контейнера можно при помощи команды $ docker update --restart=always 'ID вашего контейнера'; Опция —restart может принимать следующие значения: • no — перезапуск контейнера производиться не будет • on-failure[:max-retries] — перезапуск контейнера будет происходить max-retries раз в случае любого сбоя • always — перезапуск контейнера будет происходить всегда • unless-stopped — перезапуск контейнера будет происходить всегда до тех пор, пока вы явно не остановите контейнер Процедура обновления сервера с Docker достаточно простая и выполняется всего одной командой $ docker-machine upgrade default Waiting for SSH to be available... Detecting the provisioner... Upgrading docker... Stopping machine to do the upgrade... Upgrading machine "default"... Default Boot2Docker ISO is out-of-date, downloading the latest release... Latest release for github.com/boot2docker/boot2docker is v1.12.4 Downloading /Users/amaksimov/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v1.12.4/boot2 docker.iso. 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100% Copying /Users/amaksimov/.docker/machine/cache/boot2docker.iso to /Users/amaksimov/.docker/machine/machines/default/boot2docker.iso... Starting machine back up... (default) Check network to re-create if needed... (default) Waiting for an IP... Restarting docker... Специализированные средства обеспечения безопасности Docker Как только выросла популярность Docker, так сразу же и начали появляться инструменты для обеспечения безопасности контейнеров. Одним из важных инструментов являются сканеры образов. На данный есть несколько проектов: Clair от CoreOS и Docker Security Scanning , которые интегрированы в Docker Hub и могут проверить наличие уязвимостей в образах автоматически, что экономит массу времени. Они могут также отправляют уведомления по электронной почте, когда уязвимость обнаружена и самостоятельно ищут доступные исправления. Есть еще один пакет для обеспечения безопасности контейнеров — Twistlock . Он обеспечивает всесторонний подход к этому вопросу и охватывает множество областей безопасности. Он не только защищает контейнеры приложений, но и обеспечивает мониторинг, анализ и своевременное реагирование на угрозы. Twistlock является одним из немногих коммерчески доступных решений, которое сосредоточилось исключительно на обеспечении безопасности Docker. Усилия Docker сообщества по защите контейнеров Docker выпустил ряд обновлений для системы безопасности в течение последних нескольких лет, что решило множество вопросов безопасности, которые не позволяли предприятиям решиться использовать его в 2013 году. Эти разработки позволили облегчить использование Docker среди Enterprise и обеспечили стабильный рост популярности этой технологии. Основные вопросы в области безопасности, которые отталкивали от Docker в первые дни были namespaces и cgroups. Namespaces обеспечивают наиболее простую форму изоляции между контейнерами, предотвращая их взаимодействия друг с другом. Namespaces дают возможность использовать различные привилегии, которые могут быть назначены различным пользователям. Cgroups же ограничивают количество ресурсов, которые разрешено использовать каждому отдельному контейнеру. Они дают ограничить доступность к ресурсам, таким как память и процессор для каждого контейнера. К контейнерам можно применить жесткие ограничения, чтобы быть уверенным в том, что процессы будут убиты, если они начинают требовать слишком много ресурсов. Эта мера обеспечивает защиту от эксплуатации от внешнего источника. В сообществе Docker также разработали Docker Bench , сценарий, который может проверить контейнеры и конфигурации безопасности своих хостов на соответствие с набором лучших практик, предоставленных Center for Internet Security Docker Swarm по состоянию на версию Docker 1.12 встроенный в Docker, также предоставляет некоторые функции безопасности. Он обеспечивает узлы, на которых установлен Docker поддержкой сертификатов Transport Layer Security (TLS) и шифрует обмен данными между ними. И, наконец, поддержка в Docker функций доверия к содержимому контейнеров — очень элегантное решение обеспечения возможности проверки достоверности содержимого контейнеров. Использование Docker от поставщиков услуг Еще один способ увеличить безопасность Docker (особенно для организаций без большого опыта работы с Docker) — это использовать управляемые хостинг платформы для запуска Docker контейнеров. Данный подход обеспечивает удобство упрощенного управления и некоторые встроенные функции безопасности (в зависимости от поставщика конечной услуги). Наилучшим примером является EC2 контейнерный сервис от Amazon (сокращенно ECS ), который обеспечивает работу контейнеров Docker добавляя к вышеперечисленным функциям обеспечения безопасности дополнительные, такие как Управление идентификацией и доступом ( IAM ), а также запуск ваших контейнеров только на принадлежащих вам виртуальных машинах. Azure и Cloud также предлагают свои собственные услуги, управляющие Docker с интегрированными в услугу всеми передовыми практиками обеспечения безопасности. Помимо этого, у самого Docker есть коммерческий продукт Docker Datacenter (или Docker cloud product), который по заявлениям разработчиков является лучшим способом для запуска контейнеров, принадлежащих предприятию, если есть необходимость обеспечить дополнительную защиту Docker контейнеров, разместив их в ЦОД организации и закрыв их брандмауэром, управляемым самой организацией. Выводы В целом, глядя на то, как Docker улучшился за последние годы, можно смело сказать, что он значительно более безопасен сегодня по сравнению с тем, каким он был впервые увидя свет. Вообще говоря, опасения на тему безопасности Docker на ранних этапах его развития были разумными, однако, в настоящее время в Docker реализован целый ряда мер по обеспечению безопасности, которые делают его готовым для любого типа Enterprise предприятия. |