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

  Опросы
  Статьи

Работа с Debian  

О Linux с любовью или Debian: через знание к любви

Конечно, одним лишь перечислением замечательных качеств любовь к Linux не возникнет. Для

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

Опрос  

Защита личных и клиентских данных: как мошенники используют ИИ и как защититься?

По данным RED Security, общее число кибератак на российские компании в 2024

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

Опрос  

Облачные инструменты для разработчиков

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Как с помощью облака сделать

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

Опрос  

Рынок мобильных приложений: что будет актуальным в 2025 году?

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Ваши прогнозы: чего ожидать от

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

Рынок труда  

Как успешно пройти все этапы собеседования на ИТ-должность?

По оценкам государства, дефицит ИТ-специалистов составляет от 740 тысяч до 1 миллиона

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Друзья сайта  

 Работа с контейнерами 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