ݺߣ

ݺߣShare a Scribd company logo
1
RHEL 7
Контейнеры & Docker
Вебинар 28 Октября 2014
, RHCAАндрей Маркелов
Senior Solution Architect
andrey@redhat.com
2
Контейнеры и виртуализация
● Разные концепции
● Виртуализация – вертикальное абстрагирование
● Контейнеры – горизонтальное разбиение
● Контейнеры используются для замены виртуализации там, где они справляются
лучше:
● Горизонтальная изоляция приложений
● Делегирование окружений
● “Виртуализация приложений”
● Максимальная плотность
● Зачастую контейнеры используются поверх виртуализации
3
Контейнеры в RHEL 7
4
Namespaces (пространства имен)
● Mount namespaces
● mount(), umount()
● UTS namespaces
● uname()
● IPC namespaces
● System V IPC objects, POSIX message queues
● PID namespaces
● /proc, PID
● Network namespaces
● NICs, firewall, routing table
5
Control Groups (CGroups)
● В RHEL 7 десять групп
● Основные группы:
● cpu
● memory
● blkio
● systemctl
● net-prio
● cgconfig (устарела) libcgroup будет удалена
6
SELinux – реализация MAC для Linux
● Интегрирована в ядро
● LSM и расширенные атрибуты
● Для чего использовать:
● Запуск программ с минимальными привилегиями
● Защита от эксплоитов
● Защита пользовательских данных
● Для чего не предназначена:
● Аудит кода
● Шифрование
● Обновления
7
Docker – изменяет правила игры
● Docker CLI интересен, но это не столь значительное
нововведение. Технологии, позволяющие создавать
контейнеры у нас были с RHEL 5
● Docker как формат упаковки и распространения приложений
– вот что важно!
8
Docker - понятия
● Контейнер – запущенное из образа приложение
● Образ – статический снимок конфигурации контейнера.
Образы могут зависить от других образов. Образ всегда r/o.
Изменения сохраняются только созданием образа поверх
образа.
● Образ платформы – не имеющий родительских образов.
Содержит базовые библиотеки и утилиты для запуска
приложений. Мы поставляем образы RHEL 6 и 7.
9
Docker – упаковка приложений
● API и формат образов:
● Перемещаемость контейнеров между хостами
● Контроль версий и переиспользование компонентов
● Удаленный репозиторий для образов
● Dockerfile – шаблон конфигурации для сборки образов
10
Контейнеры в RHEL 7 Вариант 1: Host Containers
Host Containers
Идентичные
контейнеры
Host
RHEL
● В RHEL 7 хост делится на
защищенные контейнеры
● В каждом контейнере
запускается код RHEL 7
пространства пользователя
● За : Обновления применяются
просто запуском “yum update”
● Против : Ограничено только
средой исполнения RHEL 7
11
Контейнеры в RHEL 7 Вариант 2:
Image-based Containers
Image-based
Containers
Разные контейнеры
RHEL 6
RHEL 7
RHSCL
Fedora
Формат Docker
● Docker предоставляет формат
образов для распространения
программного обеспечения.
● Пакеты самого приложения и
все зависимости для внедрения
приложения в контейнерах
● Docker включает в себя среду
исполнения для приложений
12
Что мы поддерживаем в Docker?
● RHEL 6 x86_64
● RHEL 7 x86_64
● Не в mission-critical производственных средах
● Если все-таки mission-critical, то откройте заявку в поддержке
● Какие приложения? “...Single process user-space applications
that run on Red Hat Enterprise Linux 7 should be able to run
inside docker formatted Linux container using a RHEL 7
platform image...”
● https://access.redhat.com/solutions/907283
● Какая версия Docker?
● На сегодня (28 октября 2014) - docker-1.1.2-13.el7.x86_64
13
Установка и запуск
● # subscription-manager repos --enable=rhel-7-server-extras-
rpms
● # subscription-manager repos --enable=rhel-7-server-optional-
rpms
● # yum install docker docker-registry
● # systemctl start docker.service
● # systemctl enable docker.service
14
Создание локального репозитория
● # systemctl enable docker-registry
● # systemctl start docker-registry
● # systemctl status docker-registry
● # docker pull registry.access.redhat.com/rhel
● # docker pull fedora
15
Пример запуска
# mkdir /opt/rhel_data
# echo "Server up and running" > /opt/rhel_data/test.txt
# docker run -d -p 8080:8000 --name="python_web" 
-v /usr/sbin:/usr/sbin -v /usr/bin:/usr/bin -v /usr/lib64:/usr/lib64 
-w /opt -v /opt/rhel_data:/opt rhel /bin/python -m
SimpleHTTPServer 8000
# netstat -tupln | grep 8080
tcp6 0 0 :::8080 :::* LISTEN
27739/docker
# curl localhost:8080/test.txt
Server up and running
16
Взгляд изнутри
# nsenter -m -u -n -i -p -t 26146 /bin/bash
[root@58120e57a2df /]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
[root@58120e57a2df /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:27 ? 00:00:00 /bin/python -m
SimpleHTTPServer 8000
root 6 0 0 08:48 ? 00:00:00 /bin/bash
root 20 6 0 08:50 ? 00:00:00 ps -ef
17
Что дальше?
● Get Started with Docker Containers in RHEL 7
● https://access.redhat.com/articles/881893
● Project Atomic
● http://www.projectatomic.io/
● Документация Red Hat
● http://docs.redhat.com/
Спасибо! Вопросы?
Представительство
Red Hat в России и СНГ
Москва, Земляной вал, 9
Тел +7 495 662 8837

More Related Content

RHEL 7. Контейнеры и Docker

  • 1. 1 RHEL 7 Контейнеры & Docker Вебинар 28 Октября 2014 , RHCAАндрей Маркелов Senior Solution Architect andrey@redhat.com
  • 2. 2 Контейнеры и виртуализация ● Разные концепции ● Виртуализация – вертикальное абстрагирование ● Контейнеры – горизонтальное разбиение ● Контейнеры используются для замены виртуализации там, где они справляются лучше: ● Горизонтальная изоляция приложений ● Делегирование окружений ● “Виртуализация приложений” ● Максимальная плотность ● Зачастую контейнеры используются поверх виртуализации
  • 4. 4 Namespaces (пространства имен) ● Mount namespaces ● mount(), umount() ● UTS namespaces ● uname() ● IPC namespaces ● System V IPC objects, POSIX message queues ● PID namespaces ● /proc, PID ● Network namespaces ● NICs, firewall, routing table
  • 5. 5 Control Groups (CGroups) ● В RHEL 7 десять групп ● Основные группы: ● cpu ● memory ● blkio ● systemctl ● net-prio ● cgconfig (устарела) libcgroup будет удалена
  • 6. 6 SELinux – реализация MAC для Linux ● Интегрирована в ядро ● LSM и расширенные атрибуты ● Для чего использовать: ● Запуск программ с минимальными привилегиями ● Защита от эксплоитов ● Защита пользовательских данных ● Для чего не предназначена: ● Аудит кода ● Шифрование ● Обновления
  • 7. 7 Docker – изменяет правила игры ● Docker CLI интересен, но это не столь значительное нововведение. Технологии, позволяющие создавать контейнеры у нас были с RHEL 5 ● Docker как формат упаковки и распространения приложений – вот что важно!
  • 8. 8 Docker - понятия ● Контейнер – запущенное из образа приложение ● Образ – статический снимок конфигурации контейнера. Образы могут зависить от других образов. Образ всегда r/o. Изменения сохраняются только созданием образа поверх образа. ● Образ платформы – не имеющий родительских образов. Содержит базовые библиотеки и утилиты для запуска приложений. Мы поставляем образы RHEL 6 и 7.
  • 9. 9 Docker – упаковка приложений ● API и формат образов: ● Перемещаемость контейнеров между хостами ● Контроль версий и переиспользование компонентов ● Удаленный репозиторий для образов ● Dockerfile – шаблон конфигурации для сборки образов
  • 10. 10 Контейнеры в RHEL 7 Вариант 1: Host Containers Host Containers Идентичные контейнеры Host RHEL ● В RHEL 7 хост делится на защищенные контейнеры ● В каждом контейнере запускается код RHEL 7 пространства пользователя ● За : Обновления применяются просто запуском “yum update” ● Против : Ограничено только средой исполнения RHEL 7
  • 11. 11 Контейнеры в RHEL 7 Вариант 2: Image-based Containers Image-based Containers Разные контейнеры RHEL 6 RHEL 7 RHSCL Fedora Формат Docker ● Docker предоставляет формат образов для распространения программного обеспечения. ● Пакеты самого приложения и все зависимости для внедрения приложения в контейнерах ● Docker включает в себя среду исполнения для приложений
  • 12. 12 Что мы поддерживаем в Docker? ● RHEL 6 x86_64 ● RHEL 7 x86_64 ● Не в mission-critical производственных средах ● Если все-таки mission-critical, то откройте заявку в поддержке ● Какие приложения? “...Single process user-space applications that run on Red Hat Enterprise Linux 7 should be able to run inside docker formatted Linux container using a RHEL 7 platform image...” ● https://access.redhat.com/solutions/907283 ● Какая версия Docker? ● На сегодня (28 октября 2014) - docker-1.1.2-13.el7.x86_64
  • 13. 13 Установка и запуск ● # subscription-manager repos --enable=rhel-7-server-extras- rpms ● # subscription-manager repos --enable=rhel-7-server-optional- rpms ● # yum install docker docker-registry ● # systemctl start docker.service ● # systemctl enable docker.service
  • 14. 14 Создание локального репозитория ● # systemctl enable docker-registry ● # systemctl start docker-registry ● # systemctl status docker-registry ● # docker pull registry.access.redhat.com/rhel ● # docker pull fedora
  • 15. 15 Пример запуска # mkdir /opt/rhel_data # echo "Server up and running" > /opt/rhel_data/test.txt # docker run -d -p 8080:8000 --name="python_web" -v /usr/sbin:/usr/sbin -v /usr/bin:/usr/bin -v /usr/lib64:/usr/lib64 -w /opt -v /opt/rhel_data:/opt rhel /bin/python -m SimpleHTTPServer 8000 # netstat -tupln | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 27739/docker # curl localhost:8080/test.txt Server up and running
  • 16. 16 Взгляд изнутри # nsenter -m -u -n -i -p -t 26146 /bin/bash [root@58120e57a2df /]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.0 (Maipo) [root@58120e57a2df /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:27 ? 00:00:00 /bin/python -m SimpleHTTPServer 8000 root 6 0 0 08:48 ? 00:00:00 /bin/bash root 20 6 0 08:50 ? 00:00:00 ps -ef
  • 17. 17 Что дальше? ● Get Started with Docker Containers in RHEL 7 ● https://access.redhat.com/articles/881893 ● Project Atomic ● http://www.projectatomic.io/ ● Документация Red Hat ● http://docs.redhat.com/
  • 18. Спасибо! Вопросы? Представительство Red Hat в России и СНГ Москва, Земляной вал, 9 Тел +7 495 662 8837