Docker является одной из самых современных и прогрессивных технологий для создания контейнеров в операционных системах Linux. В основе технологии лежат несколько относительно новых механизмов ядра Linux — cgroups и namespaces. Control Groups позволяет ограничивать и изолировать для групп процессов такие ресурсы как: процессор, сеть, память и ввод-вывод. Второй механизм это изоляция пространств имён (namespaces), который собственно и позволяет изолировать процесс от остальных процессов операционной системы.
Почему Docker так популярен?
Идея докера не нова. Точно такой же стек технологий для виртуализации и изоляции процессов используется и в LXC. Кстати говоря, первые версии docker работали с namespaces и cgroups не напрямую, а через LXC-библиотеки. Немного ранее на пике популярности была OpenVZ контейнеризация. На графике ниже видна динамика популярности самых распространённых систем виртуализации и контейнеризации. Docker нельзя напрямую сравнивать с технологиями от VMware, однако, видно как лихо докер стал завоёвывать популярность.
Собственно, других технологий хоть немного способных конкурировать с докером не существует. Так почему же от так стремительно стал популярным?
На что способен Docker
На самом деле юз-кейсов у докера достаточно много, рассмотрим основные. И начнём от простого к сложному.
Кто успешно внедрил Docker
Когда пора переходить на Docker
Как начать изучение и внедрение Docker
- Настройка iptables при работе с Docker на CentOS 7
- Portainer — web-ui для управления Docker
- Основы Docker
- Полная автоматизация «development» среды с помощью docker-compose
- Большой Docker FAQ: отвечаем на самые важные вопросы
- Rancher на Centos 7.4 + iptables: установка и настройка
Безопасность в докер-контейнерах
Проблемы внедрения и эксплуатации Docker
Технология молодая и активно развивающаяся, поэтому в ней постоянно находят и исправляют ошибки, из-за чего от версии к версии может теряться совместимость и переход на новую версию, чтобы избавиться от проблем может принести ещё больше проблем, такие как изменение формата конфигурационных файлов или несовместимость с другим ПО.
Так, например, на CentOS 6 нельзя поставить docker-compose, т.к. он требует версию докера не поддерживающую эту версию linux-ядра.
Вот небольшой список проблем и способы их решения: