SlideShare a Scribd company logo
1 of 54
Download to read offline
Основы контейнерной
виртуализации в Linux
Кирилл Кринкин
2
Namespace vs CGroups
● Namespace –
механизм изоляции
и группировки
структур данных
ядра.
● Control groups –
механизм изоляции
ресурсов ядра
3
Представление процесса в linux
include/linux/sched.h, include/linux/nsproxy.h
http://lxr.free-electrons.com/source/include/linux/sched.h#L1273
http://lxr.free-electrons.com/source/include/linux/nsproxy.h#L29
4
Namespaces API
● clone()
● unshare()
● setns()
5
clone / unshare
VS.
6
Namespaces
● Mount (_NEWNS)
● UTS (_NEWUTS)
● IPC (_NEWIPC)
● PID (_NEWPID)
● user (_NEWUSER)
7
Mount namespace
● mount namespace – копия дерева файловой
системы, ассоциированная с процессом
● Создание:
● Опции:
– распространение событий монтирования
– запрет перемонтирования
8
Флаги mount
– bind – смонтировать существующее дерево
в другую точку (поддерево будет доступно в
обоих местах)
Распространение изменений:
–make-shared
–make-slave
–make-private
–make-unbindable
Подробнее:
Documentation/filesystems/sharedsubtree.txt
9
Пример: приватное монтирование
10
UTS namespace
● Изоляция имени хоста и доменного имени
● utsname
● Создание:
11
Пример: создание UTS
см: namespaces/demo_uts_namespaces.c
12
Удержание пространства имен
#touch ./uts
#mount —bind /proc/6221/ns/uts ./uts
см: namespaces/ns_exec.c
# hostname
– thinkpad
#./ns_exec ./uts hostname
– newhostname
13
PID namespace
● Назначение: изоляция идентификаторов процессов
● Создание
● Возможности:
– миграция контейнеров с сохранением PIDs
– имитация init-процесса
– могут быть вложенными
14
Иерархия PIDNS
31
2
4
31 2
12
0
родитель
потомок
15
PIDs & TGIDs
16
Пример: PID namespace
● см: pidns_init_sleep.c
17
IPC namespace
● Изоляция ресурсов IPC (System V IPC) –
очередей сообщений, разделяемая память...
● Создание:
18
USER namespace
● Изоляция идентификаторов пользователей и групп
● Создание:
● Возможности:
– Предоставление привилегированных операций
непривилегированному пользователю внутри пространства
имен
– Отображение пользователей и групп
● /proc/sys/kernel/overflowuid
19
Пример: user namespace
● см: demo_userns.c
./demo_userns
20
Network namespace
● Изоляция сетевой конфигурации, интерфейсов, правил
марштуризации
● Создание:
Примеры (через ip):
– ip netns add netns1
– ip netns exec netns1 ip link list
– ip netns delete netns1
– ip netns exec netns1 ip link set dev lo up
– ip netns exec netns1 ping 127.0.0.1
21
Control groups
● Подсистемы Linux (немного истории)
● Иерархия ресурсов и контрольные группы
● Обзор контроллеров
● Примеры
22
Подсистема и контрольная группа
● Подсистема (subsystem) – модуль
предоставляющий возможности для группировки и
управления (ограничение, подсчет использования,...)
определенными ресурсами процессов.
● Контрольная группа (Control Group, cgroup) –
множество параметров, ассоциированное с одной
или более подсистем.
23
Иерархии ресурсов
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
Память(100%):
- процессы пользователей (30%)
- работники
- QA (5%)
- разработчики (15%)
- гости
- системные (10%)
- архиватор
- анализаторы логов
- службы (50%)
- почта (10%)
- продуктовая БД (40%)
Устройства:
- /dev/*
-- /dev/sda
– /dev/snd
CPUs 0-15:
- продуктовые сервисы 0-8
- пользователи: 9-12
- службы: 13-15
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
24
Подсистемы = контроллеры
● blkio – управление вводом выводом блочных устройств
● cpu – управление доступом к процессору
● cpuacc – отчеты по использованию процессора
● cpuset – приязка к процессорам и банкам памяти
● devices – доступ к устройствам
● freezer – останов/возобновление работы группы
● memory – ограничения и учет использования памяти
● net_cls – маркировка пакетов для контроллера трафика
25
Файлы cgroup
● /proc/cgroups
● /proc/self/cgroup – группы процесса
● /sys/fs/cgroup/ (/cgroup) – корень иерархии
● */tasks – PIDs участников группы
● */cgroup.procs – список thread groups
● */notify_on_release – флаг вызова агента
разрушения (по-умолчанию 0)
● */release_agent – путь к агенту разрушения
26
Подсистемы и точки
монтирования
27
cgcreate: cоздание группы
● cgcreate
-t uid:gid – пользователи получающие права на
перемещение заданий в(из) группу
-a uid:gid – пользователи получающие права на
управление параметрами группы
-g список подсистем (контроллеров):путь
● Пример
cgcreate -t kkv:kkv -g memory,cpu:/mycgroup
28
cgdelete: удаление группы
● cgdelete
-g список подсистем (контроллеров):путь
● Пример
cgdelete -g memory,cpu:/mycgroup
(*) при удалении группы, входящие в нее задачи
перемещаются в родительскую группу
29
Перемещение процессов в группу
● cgclassify
-g список подсистем (контроллеров):путь
PID [PID PID …]
Примеры:
$cgclassify -g cpu:/mycgroup 6433 3662
$echo 6433 >/sys/fs/cgroup/cpu/mucgroup/tasks
30
Выполнение процесса в группе
● cgexec
-g список подсистем (контроллеров):путь
имя_приложения
● Пример
cgexec -g memory:/mycgroup google-chrome
31
Группы процесса
32
cgget – доступ к параметрам
● cgget
-r параметр группа
Пример:
$cgget -r cpu.shares /mycgroup
>/mycgroup:
>cpu.shares: 1024
cat /sys/fs/cgroup/cpu/mycgroup/cpu.shares
>1024
33
cgset – установка параметров
● cgset
-r параметр=значение
Пример:
$cgset -r cpu.shares=8 /mycgroup
$echo 9 >/sys/fs/cgroup/cpu/mycgroup/cpu.shares
34
Контроллер cpuset
● Назначение: управление привязкой процессоров и
памяти к процессам
● ←/→ cpuset. cpus – список привязанных процессоров
● ←/→ cpuset. mems – список привязанных процессоров
● ←/→ cpuset. cpu_exclusive – флаг эксклюзивного
использования процессора группой
● ←/→ cpuset.sched_load_balance +
cpuset.sched_relax_domain_level – управление
балансировкой нагрузки в группе
try: cat /proc/self/status
35
cpuset.sched_relax_domain_level
● -1 – не менять внешние правила
● 0 – периодическая балансировка
● 1 – немедленная между потоками одного ядра
● 2 – немедленная между ядрами пакета
● 3 – немедленная в рамках узла
● 4 – немедленная между процессорами на NUMA
системе
● 5 – немедленная по всей системе
try: cat /proc/self/status
36
Контроллер cpu
● Назначение: управление распределеним
нагрузки на процессоры
cpu.shares – доля использования процессора по
отношению к другим группам
cpu.rt_runtime_us – максимальноый период
монопольного использования процессора в
микросекундах
cpu.rt_period_us – максимальное время
ожидания процессора группой
37
Контроллер cpuacct
● Назначение: сбор статистики по
использованию процессора
cpuacct.stat – число циклов процессора
cpuacct.usage – суммарное время
cpuacct.usage_percpu – число циклов
процессора, включая задания подгрупп
38
Контроллер devices
● Назначение: управление доступом к устройствам
из группы
→devices.allow – устройства доступные группе
→devices.deny – запрещенные устройства в группе
←devices.list – просмотр устройств в whitelist
Примеры:
echo 'c 1:3 mr' > /sys/fs/cgroup/1/devices.allow
echo a > /sys/fs/cgroup/1/devices.deny
echo a > /sys/fs/cgroup/1/devices.allow
https://www.kernel.org/doc/Documentation/devices.txt
39
Контроллер freezer
● Назначение: заморозка/разморозка исполнения
группы процессов
←/→freezer.state – состояние заморозки
● FROZEN — задания приостановлены
● FREEZING – в стадии приостановки (включая группы-потомки)
● THAWED – возобновление работы
● ←freezer.self_freezing собственное состояние
заморозки
● ←freezer.parent_freezing родительское состояние
состояние заморозки
40
Контроллер memory
● Назначение: управление и мониторинг использования памяти
←memory.stat – получение статистики по использованию памяти
– total_ – текущая группа и подгруппы
←memory.[memsw.]usage_in_bytes – используемая память в байтах
(в подкачке)
←/→memory.[memsw.]limit_in_bytes
←memory.[memsw.].failcnt – счетчик числа достижений лимита
памяти
←/→memory.oom_control — флаг разрешения OOM-killer
(*) ←/→memory.soft_limit_in_bytes — флаг разрешения OOM-killer
см https://www.kernel.org/doc/Documentation/cgroups/memory.txt
41
Контроллер blkio
● → blkio.weight – [100-1000], относительный вес ввода вывода в
группе
● → blkio.weight – [100-1000], относительный вес ввода вывода в
группе для конкретного устройства
● ← blkio.time – время доступа ввода-вывода в группе
● ← blkio.sectors – количество перемещенных между устройствами
секторов в группе
● ← blkio.io_service_bytes – количество перемещенных между
устройствами байт в группе
● ← blkio.io_service_time – время между выдачей запроса и его
завершением
● ← blkio.io_queued – число запросов в очереди ввода вывода группы
Виртуальные машины и контейнеры
Миссия
● Docker:
– простой и лекговесный путь от модели к
реальности
– минимизация риска падения приложений при
переносе из окружения разработки в «боевые
условия»
– Ускорение code->test->deploy->use
Технические компоненты
● libcontainer format
● kernel namespaces
– fs isolation
– process isolation
– network isolation
● CoW FS
● логирование STDOUT, STDIN,STDERR
● CLI
● GUI (сторонние разработки)
Базовые механизмы Linux
Контейнер Docker
● Формат образа
● Набор стандартных операций
● Исполнительная среда
Метафора: контейнер содержит образ
программного обеспечения – груз, и над ним
возможны операции: создание, старт,
останов...
Установка
– ядро 3.8+
– x64
– Хранилище:
● Device Mapper
●
AUFS
● vfs
● btrfs
– curl
● sudo sh -c "echo deb https://get.docker.io/ubuntu docker main
>/etc/apt/sources.list.d/docker.list"
● curl -s https://get.docker.io/gpg | sudo apt-key add -
● sudo apt-get update && sudo apt-get install lxc-docker
● sudo docker info
Hello world #1
#docker
#docker version
#docker search tutorial
#docker pull learn/tutorial
#docker run echo "Hello world"
run & start
● -t псевдотерминал
● -i оставить STDIN открытым
● имя образа
● команда (например /bin/bash)
Основные команды
● create
● run
● start
● stop
● inspect
● diff
Создание образа
● Действия в контейнере + commit
●
Dockerfile + build
– FROM
– MAINTAINER
– RUN
– CMD
– EXPOSE
– VOLUME
– ...
ex:
#docker build --rm -t repo:image .
Аналогия с git
● docker diff
● docker commit
● docker pull
● docker push
Хранилище образов
54
Для чтения
● RHEL System resources management guide
● https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt
● https://www.kernel.org/doc/Documentation/cgroups/memory.txt
● https://www.docker.com/
● https://www.docker.com/tryit/
● http://hub.docker.com
● http://www.netpatch.ru/research/docker/2014/03.24-linux-docker-practica
l-guide.html
● James Turnbull «The Docker Book»
● http://www.ibm.com/developerworks/library/l-mount-namespaces/
● http://lwn.net/Articles/531114/
● https://github.com/krinkin/oslinux-seminars-2015/

More Related Content

What's hot

Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker Andrey Markelov
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Ontico
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Ontico
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Anastasia Lubennikova
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Ontico
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используютITCrowd Almaty
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)Ontico
 
Базы данных. Cassandra
Базы данных. CassandraБазы данных. Cassandra
Базы данных. CassandraVadim Tsesko
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
 
Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяСергей Ладыгин
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)AvitoTech
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQAlexander Svetkin
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Ontico
 

What's hot (20)

Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
 
Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)Механика DDoS (Александр Крижановский)
Механика DDoS (Александр Крижановский)
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Docker 1.9
Docker 1.9Docker 1.9
Docker 1.9
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)Константин Осипов (Mail.Ru)
Константин Осипов (Mail.Ru)
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в Яндексе
 
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
 
Базы данных. Cassandra
Базы данных. CassandraБазы данных. Cassandra
Базы данных. Cassandra
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 
Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоваться
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQ
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...
 

Viewers also liked

Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015OSLL
 
Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12OSLL
 
Студентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работеСтудентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работеOSLL
 
Block-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contraBlock-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contraOSLL
 
Source code analyzer
Source code analyzer Source code analyzer
Source code analyzer OSLL
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2TagOSLL
 
Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...
Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...
Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...OSLL
 
Raspberry Pi robot with ROS
Raspberry Pi robot with ROSRaspberry Pi robot with ROS
Raspberry Pi robot with ROSOSLL
 
OLPC Mesh networking improvements
OLPC Mesh networking improvementsOLPC Mesh networking improvements
OLPC Mesh networking improvementsOSLL
 
[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration toolOSLL
 
Обзор Btrfs
Обзор BtrfsОбзор Btrfs
Обзор BtrfsOSLL
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFSOSLL
 
MOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern EducationMOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern EducationOSLL
 
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagImplementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagOSLL
 
N8xx olpc connectivity
N8xx olpc connectivityN8xx olpc connectivity
N8xx olpc connectivityOSLL
 
SVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulationsSVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulationsOSLL
 
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...OSLL
 
Fruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivityFruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivityOSLL
 
Работа с геоданными в MongoDb
Работа с геоданными в MongoDbРабота с геоданными в MongoDb
Работа с геоданными в MongoDbOSLL
 
Open Source implementation of ZigBee
Open Source implementation of ZigBeeOpen Source implementation of ZigBee
Open Source implementation of ZigBeeOSLL
 

Viewers also liked (20)

Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
 
Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12Geo2tag LBS platform training at FRUCT12
Geo2tag LBS platform training at FRUCT12
 
Студентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работеСтудентам и не только. Как выступить с докладом по своей научной работе
Студентам и не только. Как выступить с докладом по своей научной работе
 
Block-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contraBlock-level compression in Linux. Pro et contra
Block-level compression in Linux. Pro et contra
 
Source code analyzer
Source code analyzer Source code analyzer
Source code analyzer
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2Tag
 
Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...
Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...
Korolev et al. Smart Space Applications Integration: A Mediation Formalism an...
 
Raspberry Pi robot with ROS
Raspberry Pi robot with ROSRaspberry Pi robot with ROS
Raspberry Pi robot with ROS
 
OLPC Mesh networking improvements
OLPC Mesh networking improvementsOLPC Mesh networking improvements
OLPC Mesh networking improvements
 
[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool[MDBCI] Mariadb continuous integration tool
[MDBCI] Mariadb continuous integration tool
 
Обзор Btrfs
Обзор BtrfsОбзор Btrfs
Обзор Btrfs
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFS
 
MOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern EducationMOOCs Virtual Lab in Modern Education
MOOCs Virtual Lab in Modern Education
 
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagImplementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
 
N8xx olpc connectivity
N8xx olpc connectivityN8xx olpc connectivity
N8xx olpc connectivity
 
SVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulationsSVG-player plugin for ns2 simulations
SVG-player plugin for ns2 simulations
 
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
 
Fruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivityFruct4 n8xx olpc-connectivity
Fruct4 n8xx olpc-connectivity
 
Работа с геоданными в MongoDb
Работа с геоданными в MongoDbРабота с геоданными в MongoDb
Работа с геоданными в MongoDb
 
Open Source implementation of ZigBee
Open Source implementation of ZigBeeOpen Source implementation of ZigBee
Open Source implementation of ZigBee
 

Similar to Linuxvirt seminar-csc-2015

MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MACAlexey Vasyukov
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeIosif Itkin
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условияхOpenVZ
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStackYandex
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStackRussia
 
Операционные системы
Операционные системыОперационные системы
Операционные системыyaevents
 
Владимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОСВладимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОСYandex
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON
 
SELinux for system administrators
SELinux for system administratorsSELinux for system administrators
SELinux for system administratorsAleksey Chudov
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...PavelKonotopov
 
Solaris OS
Solaris OSSolaris OS
Solaris OSSSA KPI
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментовVitalii Morvaniuk
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 

Similar to Linuxvirt seminar-csc-2015 (20)

MIPT Course - DAC and MAC
MIPT Course - DAC and MACMIPT Course - DAC and MAC
MIPT Course - DAC and MAC
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Консервация процессов в домашних условиях
Консервация процессов в домашних условияхКонсервация процессов в домашних условиях
Консервация процессов в домашних условиях
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStack
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
 
Операционные системы
Операционные системыОперационные системы
Операционные системы
 
Владимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОСВладимир Иванов - Безопасность Unix-подобных ОС
Владимир Иванов - Безопасность Unix-подобных ОС
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
 
SELinux for system administrators
SELinux for system administratorsSELinux for system administrators
SELinux for system administrators
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
 
Solaris OS
Solaris OSSolaris OS
Solaris OS
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 

More from OSLL

SLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSSLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSOSLL
 
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...OSLL
 
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersVirtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersOSLL
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhovaOSLL
 
SECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingSECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingOSLL
 
Smart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationSmart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationOSLL
 
HTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIHTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIOSLL
 
Fruct13 geo2tag-training
Fruct13 geo2tag-trainingFruct13 geo2tag-training
Fruct13 geo2tag-trainingOSLL
 
Json protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsJson protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsOSLL
 
Introduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformIntroduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformOSLL
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video OSLL
 
Using Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksUsing Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksOSLL
 
Geo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewGeo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewOSLL
 

More from OSLL (13)

SLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSSLAM Constructor Framework for ROS
SLAM Constructor Framework for ROS
 
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
 
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersVirtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhova
 
SECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingSECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profiling
 
Smart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationSmart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integration
 
HTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIHTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web API
 
Fruct13 geo2tag-training
Fruct13 geo2tag-trainingFruct13 geo2tag-training
Fruct13 geo2tag-training
 
Json protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsJson protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentals
 
Introduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformIntroduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platform
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video
 
Using Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksUsing Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disks
 
Geo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewGeo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture Overview
 

Linuxvirt seminar-csc-2015

  • 2. 2 Namespace vs CGroups ● Namespace – механизм изоляции и группировки структур данных ядра. ● Control groups – механизм изоляции ресурсов ядра
  • 3. 3 Представление процесса в linux include/linux/sched.h, include/linux/nsproxy.h http://lxr.free-electrons.com/source/include/linux/sched.h#L1273 http://lxr.free-electrons.com/source/include/linux/nsproxy.h#L29
  • 4. 4 Namespaces API ● clone() ● unshare() ● setns()
  • 6. 6 Namespaces ● Mount (_NEWNS) ● UTS (_NEWUTS) ● IPC (_NEWIPC) ● PID (_NEWPID) ● user (_NEWUSER)
  • 7. 7 Mount namespace ● mount namespace – копия дерева файловой системы, ассоциированная с процессом ● Создание: ● Опции: – распространение событий монтирования – запрет перемонтирования
  • 8. 8 Флаги mount – bind – смонтировать существующее дерево в другую точку (поддерево будет доступно в обоих местах) Распространение изменений: –make-shared –make-slave –make-private –make-unbindable Подробнее: Documentation/filesystems/sharedsubtree.txt
  • 10. 10 UTS namespace ● Изоляция имени хоста и доменного имени ● utsname ● Создание:
  • 11. 11 Пример: создание UTS см: namespaces/demo_uts_namespaces.c
  • 12. 12 Удержание пространства имен #touch ./uts #mount —bind /proc/6221/ns/uts ./uts см: namespaces/ns_exec.c # hostname – thinkpad #./ns_exec ./uts hostname – newhostname
  • 13. 13 PID namespace ● Назначение: изоляция идентификаторов процессов ● Создание ● Возможности: – миграция контейнеров с сохранением PIDs – имитация init-процесса – могут быть вложенными
  • 16. 16 Пример: PID namespace ● см: pidns_init_sleep.c
  • 17. 17 IPC namespace ● Изоляция ресурсов IPC (System V IPC) – очередей сообщений, разделяемая память... ● Создание:
  • 18. 18 USER namespace ● Изоляция идентификаторов пользователей и групп ● Создание: ● Возможности: – Предоставление привилегированных операций непривилегированному пользователю внутри пространства имен – Отображение пользователей и групп ● /proc/sys/kernel/overflowuid
  • 19. 19 Пример: user namespace ● см: demo_userns.c ./demo_userns
  • 20. 20 Network namespace ● Изоляция сетевой конфигурации, интерфейсов, правил марштуризации ● Создание: Примеры (через ip): – ip netns add netns1 – ip netns exec netns1 ip link list – ip netns delete netns1 – ip netns exec netns1 ip link set dev lo up – ip netns exec netns1 ping 127.0.0.1
  • 21. 21 Control groups ● Подсистемы Linux (немного истории) ● Иерархия ресурсов и контрольные группы ● Обзор контроллеров ● Примеры
  • 22. 22 Подсистема и контрольная группа ● Подсистема (subsystem) – модуль предоставляющий возможности для группировки и управления (ограничение, подсчет использования,...) определенными ресурсами процессов. ● Контрольная группа (Control Group, cgroup) – множество параметров, ассоциированное с одной или более подсистем.
  • 23. 23 Иерархии ресурсов Процесс: - память - процессор - устройства - ввод-вывод - ... Память(100%): - процессы пользователей (30%) - работники - QA (5%) - разработчики (15%) - гости - системные (10%) - архиватор - анализаторы логов - службы (50%) - почта (10%) - продуктовая БД (40%) Устройства: - /dev/* -- /dev/sda – /dev/snd CPUs 0-15: - продуктовые сервисы 0-8 - пользователи: 9-12 - службы: 13-15 Процесс: - память - процессор - устройства - ввод-вывод - ... Процесс: - память - процессор - устройства - ввод-вывод - ...
  • 24. 24 Подсистемы = контроллеры ● blkio – управление вводом выводом блочных устройств ● cpu – управление доступом к процессору ● cpuacc – отчеты по использованию процессора ● cpuset – приязка к процессорам и банкам памяти ● devices – доступ к устройствам ● freezer – останов/возобновление работы группы ● memory – ограничения и учет использования памяти ● net_cls – маркировка пакетов для контроллера трафика
  • 25. 25 Файлы cgroup ● /proc/cgroups ● /proc/self/cgroup – группы процесса ● /sys/fs/cgroup/ (/cgroup) – корень иерархии ● */tasks – PIDs участников группы ● */cgroup.procs – список thread groups ● */notify_on_release – флаг вызова агента разрушения (по-умолчанию 0) ● */release_agent – путь к агенту разрушения
  • 27. 27 cgcreate: cоздание группы ● cgcreate -t uid:gid – пользователи получающие права на перемещение заданий в(из) группу -a uid:gid – пользователи получающие права на управление параметрами группы -g список подсистем (контроллеров):путь ● Пример cgcreate -t kkv:kkv -g memory,cpu:/mycgroup
  • 28. 28 cgdelete: удаление группы ● cgdelete -g список подсистем (контроллеров):путь ● Пример cgdelete -g memory,cpu:/mycgroup (*) при удалении группы, входящие в нее задачи перемещаются в родительскую группу
  • 29. 29 Перемещение процессов в группу ● cgclassify -g список подсистем (контроллеров):путь PID [PID PID …] Примеры: $cgclassify -g cpu:/mycgroup 6433 3662 $echo 6433 >/sys/fs/cgroup/cpu/mucgroup/tasks
  • 30. 30 Выполнение процесса в группе ● cgexec -g список подсистем (контроллеров):путь имя_приложения ● Пример cgexec -g memory:/mycgroup google-chrome
  • 32. 32 cgget – доступ к параметрам ● cgget -r параметр группа Пример: $cgget -r cpu.shares /mycgroup >/mycgroup: >cpu.shares: 1024 cat /sys/fs/cgroup/cpu/mycgroup/cpu.shares >1024
  • 33. 33 cgset – установка параметров ● cgset -r параметр=значение Пример: $cgset -r cpu.shares=8 /mycgroup $echo 9 >/sys/fs/cgroup/cpu/mycgroup/cpu.shares
  • 34. 34 Контроллер cpuset ● Назначение: управление привязкой процессоров и памяти к процессам ● ←/→ cpuset. cpus – список привязанных процессоров ● ←/→ cpuset. mems – список привязанных процессоров ● ←/→ cpuset. cpu_exclusive – флаг эксклюзивного использования процессора группой ● ←/→ cpuset.sched_load_balance + cpuset.sched_relax_domain_level – управление балансировкой нагрузки в группе try: cat /proc/self/status
  • 35. 35 cpuset.sched_relax_domain_level ● -1 – не менять внешние правила ● 0 – периодическая балансировка ● 1 – немедленная между потоками одного ядра ● 2 – немедленная между ядрами пакета ● 3 – немедленная в рамках узла ● 4 – немедленная между процессорами на NUMA системе ● 5 – немедленная по всей системе try: cat /proc/self/status
  • 36. 36 Контроллер cpu ● Назначение: управление распределеним нагрузки на процессоры cpu.shares – доля использования процессора по отношению к другим группам cpu.rt_runtime_us – максимальноый период монопольного использования процессора в микросекундах cpu.rt_period_us – максимальное время ожидания процессора группой
  • 37. 37 Контроллер cpuacct ● Назначение: сбор статистики по использованию процессора cpuacct.stat – число циклов процессора cpuacct.usage – суммарное время cpuacct.usage_percpu – число циклов процессора, включая задания подгрупп
  • 38. 38 Контроллер devices ● Назначение: управление доступом к устройствам из группы →devices.allow – устройства доступные группе →devices.deny – запрещенные устройства в группе ←devices.list – просмотр устройств в whitelist Примеры: echo 'c 1:3 mr' > /sys/fs/cgroup/1/devices.allow echo a > /sys/fs/cgroup/1/devices.deny echo a > /sys/fs/cgroup/1/devices.allow https://www.kernel.org/doc/Documentation/devices.txt
  • 39. 39 Контроллер freezer ● Назначение: заморозка/разморозка исполнения группы процессов ←/→freezer.state – состояние заморозки ● FROZEN — задания приостановлены ● FREEZING – в стадии приостановки (включая группы-потомки) ● THAWED – возобновление работы ● ←freezer.self_freezing собственное состояние заморозки ● ←freezer.parent_freezing родительское состояние состояние заморозки
  • 40. 40 Контроллер memory ● Назначение: управление и мониторинг использования памяти ←memory.stat – получение статистики по использованию памяти – total_ – текущая группа и подгруппы ←memory.[memsw.]usage_in_bytes – используемая память в байтах (в подкачке) ←/→memory.[memsw.]limit_in_bytes ←memory.[memsw.].failcnt – счетчик числа достижений лимита памяти ←/→memory.oom_control — флаг разрешения OOM-killer (*) ←/→memory.soft_limit_in_bytes — флаг разрешения OOM-killer см https://www.kernel.org/doc/Documentation/cgroups/memory.txt
  • 41. 41 Контроллер blkio ● → blkio.weight – [100-1000], относительный вес ввода вывода в группе ● → blkio.weight – [100-1000], относительный вес ввода вывода в группе для конкретного устройства ● ← blkio.time – время доступа ввода-вывода в группе ● ← blkio.sectors – количество перемещенных между устройствами секторов в группе ● ← blkio.io_service_bytes – количество перемещенных между устройствами байт в группе ● ← blkio.io_service_time – время между выдачей запроса и его завершением ● ← blkio.io_queued – число запросов в очереди ввода вывода группы
  • 43. Миссия ● Docker: – простой и лекговесный путь от модели к реальности – минимизация риска падения приложений при переносе из окружения разработки в «боевые условия» – Ускорение code->test->deploy->use
  • 44. Технические компоненты ● libcontainer format ● kernel namespaces – fs isolation – process isolation – network isolation ● CoW FS ● логирование STDOUT, STDIN,STDERR ● CLI ● GUI (сторонние разработки)
  • 46. Контейнер Docker ● Формат образа ● Набор стандартных операций ● Исполнительная среда Метафора: контейнер содержит образ программного обеспечения – груз, и над ним возможны операции: создание, старт, останов...
  • 47. Установка – ядро 3.8+ – x64 – Хранилище: ● Device Mapper ● AUFS ● vfs ● btrfs – curl ● sudo sh -c "echo deb https://get.docker.io/ubuntu docker main >/etc/apt/sources.list.d/docker.list" ● curl -s https://get.docker.io/gpg | sudo apt-key add - ● sudo apt-get update && sudo apt-get install lxc-docker ● sudo docker info
  • 48. Hello world #1 #docker #docker version #docker search tutorial #docker pull learn/tutorial #docker run echo "Hello world"
  • 49. run & start ● -t псевдотерминал ● -i оставить STDIN открытым ● имя образа ● команда (например /bin/bash)
  • 50. Основные команды ● create ● run ● start ● stop ● inspect ● diff
  • 51. Создание образа ● Действия в контейнере + commit ● Dockerfile + build – FROM – MAINTAINER – RUN – CMD – EXPOSE – VOLUME – ... ex: #docker build --rm -t repo:image .
  • 52. Аналогия с git ● docker diff ● docker commit ● docker pull ● docker push
  • 54. 54 Для чтения ● RHEL System resources management guide ● https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt ● https://www.kernel.org/doc/Documentation/cgroups/memory.txt ● https://www.docker.com/ ● https://www.docker.com/tryit/ ● http://hub.docker.com ● http://www.netpatch.ru/research/docker/2014/03.24-linux-docker-practica l-guide.html ● James Turnbull «The Docker Book» ● http://www.ibm.com/developerworks/library/l-mount-namespaces/ ● http://lwn.net/Articles/531114/ ● https://github.com/krinkin/oslinux-seminars-2015/