Работа с контейнерами Docker. Часть 1. Основы::Журнал СА 1-2.2017
www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
1001 и 1 книга  
19.03.2018г.
Просмотров: 6827
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7359
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4608
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3159
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3962
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3966
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6467
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3311
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3589
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7448
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10814
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12524
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14230
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9262
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7210
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5517
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4746
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3564
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3274
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3506
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3160
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Работа с контейнерами Docker. Часть 1. Основы

Архив номеров / 2017 / Выпуск №1-2 (170-171) / Работа с контейнерами Docker. Часть 1. Основы

Рубрика: Администрирование /  Виртуализация

Андрей Маркелов АНДРЕЙ МАРКЕЛОВ, RHCA, старший менеджер архитектурных решений компании Ericsson, автор книг об облачных технологиях, andrey.markelov@ericsson.com

Работа с контейнерами Docker
Часть 1. Основы

Узнаем, как на практике управлять контейнерами Docker, об организации взаимодействия между ними и управлением кластерами контейнеров

Архитектура Docker

Читатели журнала уже знакомы с технологиями контейнеров и проектом Docker [1, 2]. Начнем с того, что опишем базовый функционал, который пригодится в дальнейших статьях цикла, и кратко напомним об архитектуре Docker. Docker использует клиент-серверную архитектуру и состоит из клиента – утилиты docker, которая обращается к серверу припомощи RESTful API, и демона в операционной системе Linux (см. рис. 1). Хотя Docker работает и в отличных от Linux ОС, в этой статье они не рассматриваются.

Основные компоненты Docker:

  • Контейнеры – изолированные при помощи технологий операционной системы пользовательские окружения, в которых выполняются приложения. Проще всего дать определение контейнеру Docker как запущенному из образа приложению. Кстати, именно этим идеологически и отличается Docker, например, от LXC (Linux Containers), хотя они используют одни и те же технологии ядра Linux. Разработчики проекта Docker исповедует принцип: один контейнер – это одно приложение.
  • Образы – доступные только для чтения шаблоны приложений. Поверх существующих образов могут добавляться новые уровни, которые совместно представляют файловую систему, изменяя или дополняя предыдущий уровень. Обычно новый образ создается либо при помощи сохранения уже запущенного контейнера в новый образ поверх существующего, либо при помощи специальных инструкций для утилиты dockerfile. Для разделения различных уровней контейнера на уровне файловой системы могут использоваться AUFS, btrfs, vfs и Device Mapper. Если предполагается использование Docker совместно с SELinux, то требуется Device Mapper.
  • Реестры (registry), содержащие репозитории (repository) образов, – сетевые хранилища образов. Могут быть как приватными, так и общедоступными. Самым известным реестром является Docker Hub [3].

Рисунок 1. Архитектура Docker в GNU/Linux

Рисунок 1. Архитектура Docker в GNU/Linux

Для изоляции контейнеров в операционных системах GNU/Linux используются стандартные технологии ядра Linux, такие как:

  • Пространства имен (Linux Namespaces).
  • Контрольные группы (Cgroups).
  • Средства управления привилегиями (Linux Capabilities).
  • Дополнительные, мандатные системы обеспечения безопасности, такие как AppArmor или SELinux.

Рассмотрим перечисленные технологии чуть более подробно.

Механизм контрольных групп (Cgroups) предоставляет инструмент для тонкого контроля над распределением, приоритизацией и управлением системными ресурсами. Контрольные группы реализованы в ядре Linux. В современных дистрибутивах управление контрольными группами реализовано через systemd, однако сохраняется возможность управления припомощи библиотеки libcgroup и утилиты cgconfig. Основные иерархии контрольных групп (их также называют контроллерами) перечислены ниже:

  • blkio – задает лимиты на операции ввода-вывода и на доступ к блочным устройствам;
  • cpu – используя планировщик процессов, распределяет процессорное время между задачами;
  • cpuacct – создает автоматические отчеты по использованию ресурсов центрального процессора. Работает совместно с контроллером cpu, описанным выше;
  • cpuset – закрепляет за задачами определенные процессоры и узлы памяти;
  • devices – регулирует доступ задачам к определенным устройствам;
  • freezer – приостанавливает или возобновляет задачи;
  • memory – устанавливает лимиты и генерирует отчеты об использовании памяти задачами контрольной группы;
  • net_cls – осуществляет тегирование сетевых пакеты идентификатором класса (classid). Это позволяет контроллеру трафика (команда tc) и брандмауэру (iptables) учитывать этитэги при обработке трафика;
  • perf_event – позволяет производить мониторинг контрольных групп при помощи утилиты perf;
  • hugetlb – позволяет использовать виртуальные страницы памяти большого размера и применять к ним лимиты.

Пространства имен, в свою очередь, контролируют не распределение ресурсов, а доступ к структурам данных ядра. Фактически это означает изоляцию процессов друг от друга ивозможность иметь параллельно «одинаковые», но не пересекающиеся друг с другом иерархии процессов, пользователей и сетевых интерфейсов. При желании разные сервисы могут иметь даже свои собственные loopback-интерфейсы.

Примеры пространств имен, используемых Docker:

  • PID, Process ID – изоляция иерархии процессов.
  • NET, Networking – изоляция сетевых интерфейсов.
  • PC, InterProcess Communication – управление взаимодействием между процессами.
  • MNT, Mount – управление точками монтирования.
  • UTS, Unix Timesharing System – изоляция ядра и идентификаторов версии.

Механизм под названием Capabilities позволяет разбить привилегии пользователя root на небольшие группы привилегий и назначать их по отдельности. Данный функционал вGNU/Linux появился начиная с версии ядра 2.2. Изначально контейнеры запускаются уже с ограниченным набором привилегий.

При помощи опций команды docker можете разрешать и запрещать:

  • операции монтирования;
  • доступ к сокетам;
  • выполнение части операций с файловой системой, например изменение атрибутов файлов или владельца.

Подробнее ознакомиться с привилегиями можно при помощи man-страницы CAPABILITIES(7).

Статью целиком читайте в журнале «Системный администратор», №1-2 за 2017 г. на страницах 36-40.

PDF-версию данного номера можно приобрести в нашем магазине.


  1. Силаков Д. Проект Docker. Управляем виртуальными окружениями. // «Системный администратор», №3, 2015 г. – С. 4-7 (http://samag.ru/archive/article/2887).
  2. Силаков Д. Open Containers Initiative. Стандартизация в мире контейнеров. // «Системный администратор», №7-8, 2016 г. – С. 6-8 (http://samag.ru/archive/article/3229).
  3. Docker Hub – https://hub.docker.com.
  4. Описание изменений версии Docker от Red Hat – http://www.projectatomic.io/docs/docker_patches.
  5. Официальный сайт Docker – https://www.docker.com.
  6. Статья Дэна Уолша об установке Docker в CentOS – http://www.projectatomic.io/blog/2015/08/why-we-dont-let-non-root-users-run-docker-in-centos-fedora-or-rhel.

Комментарии отсутствуют

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

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru