Green-sell.info

Новые технологии
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Контейнеры linux docker

Разбираемся с Docker: установка и использование

Сегодня речь в статье пойдет о Docker . Все, кто хоть как-то касаются сферы IT слышали про Docker, но не все знают, что же это такое. Итак, сегодня мы простыми словами расскажем о том, что такое Docker, чем это отличается от виртуализации, покажем подробный процесс инсталляции на CentOS 7 и установим просто графический интерфейс Portainer , для управления контейнерами. Также немного коснемся команд для использования Docker.

ЧТО ТАКОЕ DOCKER?

Docker — это платформа, которая может “упаковать” приложение, его зависимости, middleware и так далее в так называемый “контейнер”, после чего у вас появится возможность развернуть данный контейнер на любом сервере, на котором установлен Docker — причем буквально за доли секунды, одной командой.

Благодаря этим решается сразу несколько задач — в первую очередь, процесс запуска приложения на сервере многократно упрощается, во вторую — какие-либо баги в контейнеризированном приложении никак не повлияют на сам сервер, также как и специфические настройки сервера не повлияют на приложение.

И хоть кажется, что Docker выглядит и работает как виртуальная машина, на самом деле они очень разные: виртуальная машина эмулирует сервер целиком, включая все аппаратные ресурсы, а контейнер изолирует приложение, процессы, юзеров и файловую систему. При этом все контейнеры используют общее Linux ядро хоста и запускается в нативном режиме только на Linux машинах, но зато на одной машине можно запустить примерно в 5-6 раз больше контейнеров, чем виртуальных машинах. Ниже на схеме показаны различия:

УСТАНОВКА DOCKER

Как было упомянуто в начале статьи, устанавливать Докер мы будем на CentOS 7 — процесс установки крайне простой и быстрый.

Итак, сначала необходимо установить с помощью yum несколько пакетов:

yum install -y yum-utils
device-mapper-persistent-data
Lvm2

Далее необходимо установить stable репозиторий для Докера, который вам понадобится, даже если вы захотите устанавливать билды из edge и test репозиториев:

Затем устанавливаем сам Docker:

yum install docker-ce

И, наконец, запускаем Docker:

systemctl start docker

Проверяем, что Docker запустился и работает в два шага:

systemctl status docker

Вы должны увидеть следующий вывод:

После этого пробуем развернуть контейнер hello-world:

docker run hello-world

Если все шаги были выполнены корректно, то на экране должно появится следующее:

УСТАНОВКА PORTAINER

Portainer — это очень удобный графический интерфейс для управления Docker или Docker Swarm . Устанавливается он практически в одно действие — так как сам точно также является контейнером. Итак:

Создаем разметку для Portainer:

docker volume create portainer_data

И затем запускаем сам контейнер:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

После чего заходите на сетевой адрес вашего сервера на порт 9000 , и вы должны увидеть окно с предложением установить пароль администратора:

Далее выбираем где находится наш Докер — на этом же сервере, или на другом (в нашем случае — Local ) и кликаем Connect .

После чего вас встретит красивый дэшборд:

Я предлагаю вам попробовать разобраться со всем многообразием дэшборда самим и задавать нам вопросы в комментариях — а мы пока продемонстрируем несколько фич.

Итак, сначала кликните на Containers — вы увидите все имеющиеся контейнеры с информацией о них:

Как вы можете видеть, у нас на данный момент запущен только один контейнер — Portainer, и доступ к нему открыт по порту 9000 (столбец Published Ports), и адрес во внутренней сети Docker — 172.17.0.2.

Далее кликните на App Templates в меню справа — и вы увидите весь список приложений, который можно запустить одним кликом:

Docker, часть 2 – работа с контейнерами

В предыдущей части данного руководства мы узнали, что такое Docker, получили представление о контейнерах и на простых примерах кратко рассмотрели необходимые для начала работы с Docker команды. Теперь мы остановимся на работе с контейнерами и изучим соответствующие команды.

Команды для работы с контейнерами имеют следующий синтаксис:

Рассмотрим некоторые из них более подробно.

Создание и запуск контейнеров

Запомните основные постулаты контейнеров в docker

  1. Контейнер живет, пока живет процесс, вокруг которого рождается контейнер.
  2. Внутри контейнера этот процесс имеет pid=1
  3. Рядом с процессом с pid=1 можно порождать сколько угодно других процессов (в пределах возможностей ОС, естественно), но убив (рестартовав) именно процесс с pid=1, контейнер выходит. (см п.1)
  4. Внутри контейнера вы увидите привычное согласно стандартам FHS расположение директорий. Расположение это идентично исходному дистрибутиву (с которого взят контейнер).
  5. Данные, создаваемые внутри контейнера остаются в контейнере и нигде более не сохраняются (ну, еще к этому слою есть доступ из хостовой ОС). удалив контейнер — потеряете все ваши изменения. Поэтому данные в контейнерах не хранят, а выносят наружу, на хостовую ОС.

-a – сокращение от –attach (прикрепить). Контейнер можно прикрепить к стандартным потокам STDIN, STDOUT или STDERR.
Запуск существующего контейнера (можно обращаться к контейнеру по идентификатору или имени):

Определить идентификатор или имя можно при помощи команды ps. Опция «–l» означает последний запущенный контейнер:

Как уже было рассмотрено в предыдущей части, команда run объединяет создание и запуск контейнера. Для краткости с ней можно не указывать слово container.

Для запуска внутри контейнера команды:

Запуск в фоновом режиме

-d – это сокращение от –detach (отсоединить). Контейнер будет работать в фоновом режиме, и вы сможете использовать терминал для других команд.

Присвоение имени

Чтобы не приходилось узнавать и запоминать идентификатор контейнера, при создании можно назначать каждому контейнеру уникальное имя, используя опцию командной строки —name, как в следующем примере:

После этого можно работать с контейнером (выполнять команды start, stop, remove, top, stats), обращаясь к нему по имени, например:

docker start myname – запуск контейнера
docker stats myname – отображение статистики использования ресурсов
docker top myname – отображение запущенных в контейнере процессов

Если вы попытаетесь выполнить например команду top, из выше указанного примера то получите ошибку

Я думаю если вы внимательно читали статью то сможете сами ответить почему возникает эта ошибка.

Запуск интерактивного сеанса

Для интерактивного подключения к оболочке контейнера и запуска команд, как в обычной системе Linux, нужно создать контейнер со следующими опциями:

Структура этой команды следующая:

-i задает запуск интерактивного сеанса.
-t выделяет TTY и подключает стандартные потоки ввода и вывода.
ubuntu – образ, используемый для создания контейнера.
bash (или /bin/bash) – запускаемая в контейнере Ubuntu команда.

После запуска контейнера с вышеуказанными ключами, мы как бы проваливаемся внутрь контейнера. Для выхода из запущенного сеанса и возвращения к терминалу вашего узла воспользуйтесь командой exit. Она прерывает все процессы контейнера и останавливает его:

Читать еще:  Создание кластера на linux

Если вы интерактивно подключены к контейнеру, и вам требуется выйти из сеанса, не прерывая его, при помощи комбинаций клавиш Ctrl+p и Ctrl+q можно выйти из консоли и вернуться к терминалу вашего хоста.

Если вы хотите запустить контейнер в режиме демона используйте опцию ‘-d’.

Для повторного подключения к запущенному контейнеру требуется знать его идентификатор или имя. Для этого запустите команду docker ps, а затем выполните docker attach, указав идентификатор или имя.

Проверка состояния контейнеров

Если у вас запущено несколько контейнеров Docker, и вы хотите выбрать, с каким именно работать, потребуется вывести их список. Для этого применяется команда ls. Помимо вывода списка контейнеров она выводит также полезную информацию о них. Команда без опций выдает список запущенных контейнеров:

Опция ‘-a’ указывает команде выводить все контейнеры, а не только запущенные, опция -s выводит размер каждого контейнера:

Команда inspect выдает множество полезной информации о контейнере:

Для вывода логов контейнера выполните команду logs:

Остановка контейнера

Обычно контейнер завершается автоматически после завершения процесса, но иногда требуется собственноручно завершить запущенный контейнер. Команда stop осуществляет «мягкое» завершение контейнера, по умолчанию предоставляя 10 секунд для завершения всех процессов:

Для немедленного завершения выполните команду kill. В большинстве ситуаций stop предпочтительнее.

Немедленное завершение всех запущенных контейнеров:

Удаление контейнера

удаление заданного контейнера.

удалить все не запущенные контейнеры.

Изменения в контейнере

Как уже отмечалось в начале, после остановки контейнера все изменения сделанные в нем удаляются. Это не совсем удобно, что же делать если нам нужно сохранить изменения? Для этого мы можем создать собственный контейнер взяв за основу уже готовый. Запустив интерактивный сеанс, мы можем работать в контейнере как на обычной Linux-машине и вносить любые необходимые изменения, например, устанавливать нужные пакеты. Допустим, нам требуется контейнер Ubuntu с сервером Nginx. Установим необходимые для этого программы:

Теперь нужно сохранить эти изменения, чтобы в следующий раз у нас был контейнер, где уже есть все необходимое. Для этого сначала нужно выйти из контейнера, выполнив команду exit, а затем подтвердить сделанные изменения командой commit:

Где идентификатор – это тот идентификатор, который использовался для первоначального запуска, а new-template – назначенное нами имя нового образа. Теперь он будет виден, если выполнить команду docker images:

Созданный нами новый образ готов к использованию со всеми сделанными изменениями. Кроме того, мы можем отправить его в Docker Hub, чтобы при необходимости загружать его в других местах. Для этого войдите в свою учетную запись и воспользуйтесь командой push:

где имя_пользователя – имя, соответствующее вашему аккаунту.

Заключение

На этом мы завершаем часть нашего руководства, посвященную контейнерам. В следующей части мы рассмотрим создание образов. Более подробную информацию можно получить из встроенной справки или официальной документации.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Что такое Docker и технология контейнеров Linux

Как и FreeBSD Jails и Solaris Zones, контейнеры Linux — независимые среды выполнения с собственными центральным процессором, памятью, блоком ввода-вывода и сетевыми ресурсами, которые используют ядро гостевой ОС. На выходе вы получаете что-то вроде виртуальной машины, которая работает как надстройка гостевой ОС.

В широкомасштабной системе, когда вас у работают виртуальные серверы, это обычно значит, что вы используете множество дубликатов одной и той же ОС и много лишних загрузочных томов.

В среде приложений с требованиями веб-масштабирования контейнеры — более привлекательная среда, чем традиционная серверная виртуализация.

Чтобы понять, что такое контейнеры, нужно начать с контрольных групп и пространства имен Linux, — функциями ядра Linux, которые создают стены между контейнерами и другими процессами, проходящими на хосте. Пространства имен Linux создают оболочку для набора системных ресурсов и представляют их процессу.

Контрольные группы Linux управляют изолированием и использованием системных ресурсов — центральным процессором, памятью, — для группы процессов. Например, если ваше приложение занимает много циклов ЦП и памяти, вы можете поместить его в контрольную группу, чтобы ограничить использование памяти и ЦП.

Пространства имен занимаются изолированием ресурсов для одного процесса, а контрольные группы управляют ресурсами для группы процессов.

От LXC до Docker

Оригинальная технология контейнеров Linux называется Linux Containers, или LXC.
LXC — это метод виртуализации на уровне ОС предназначенный для того, чтобы запускать множество изолированных систем Linux на одном хосте.

Контейнеры отделяют приложения от операционных систем. Это значит, что у пользователей есть чистая минимальная Linux ОС, и можно запускать все процессы в одном или нескольких изолированных контейнерах.

Так как операционная система отделена от контейнеров, вы можете перемещать контейнер на любой Linux-сервер, который поддерживает операционную среду контейнера.

Docker, который начался как проект, чтобы строить LXC-контейнеры под одно приложение, серьезно изменил LXC и сделал контейнеры более портативными и гибкими.

Docker — это открытая платформа для разработки, доставки и эксплуатации приложений. Используя контейнеры Docker, вы можете развертывать, копировать, переносить и делать резервные копии информации быстрее и легче, чем при помощи виртуальной машины. В принципе Docker привносит облакоподобную гибкость в любую инфраструктуру, которая может работать на контейнерах.

Давайте рассмотрим Docker детальнее и посмотрим, чем Docker отличается от LXC в разделе ниже.

Технология контейнеризации Docker

Хотя Docker начался как проект с открытым кодом для того, чтобы строить специализированную LXC, он позже превратился в собственную контейнерную среду исполнения. Docker — это инструмент Linux, который эффективно создает, отправляет и запускает контейнеры.

Контейнеры Docker и LXC — легковесные механизмы виртуализации в пользовательском пространстве, которые применяют контрольные группы и пространства имен, чтобы управлять изолированием ресурсов. Но между Docker и LXC есть несколько фундаментальных отличий — рассмотрим их.

Единственный процесс vs множество процессов

Docker ограничивает контейнеры, заставляя их работать как единый процесс. Если ваша среда приложения состоит из X одновременных процессов, Docker запустит X контейнеров, каждый со своим процессом. В отличие от Docker, LXC контейнеры могут запускать множество процессов.

Чтобы запустить простое многоуровневое веб-приложение в Docker, вам понадобится PHP контейнер, Nginx контейнер (веб-сервер), MySQL контейнер (для процесса базы данных) и несколько контейнеров данных для того, чтобы хранить таблицы баз данных и другую информацию приложения.

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

Читать еще:  Что такое ошибка инициализации

У однопроцессных контейнеров также есть ограничения. Например, вы не можете запускать агенты, скрипты регистрации или автоматически запускаемые SSH-процессы внутри контейнера. Также нелегко незначительно обновлять однопроцессный контейнер на уровне приложения. Вам придется запускать новый обновленный контейнер.

Бесструктурность vs структурность

Контейнеры Docker сделаны так, чтобы быть более бесструктурными, чем LXC.

Во-первых, Docker не поддерживает внешнее хранилище. Docker обходит это тем, что позволяет вам подключать хранилище хоста в качестве тома Docker из ваших контейнеров. Так как тома подключаются, они не считаются частью среды контейнера.

Во-вторых, контейнеры Docker состоят из слоев в режиме чтения. Это значит, что как только создается образ контейнера, он не меняется. Во время выполнения программы, если процесс в контейнере меняет свое внутреннее состояние, создается разница между внутренним состоянием и образом, из которого был создан контейнер.

Если вы выполняете команду docker commit, разница между двумя версиями становится частью нового образа — не оригинального, а нового, из которого вы можете создавать новые контейнеры. Если вы удалите контейнер, разница версий исчезнет.

Бесструктурный контейнер — интересная сущность. Вы можете обновлять контейнер, но серия обновлений создаст серию новых образов контейнеров, поэтому в системе так легко откатываться.

Портативность

Пожалуй, это самое важное преимущество Docker над LXC. Docker больше отделяет сетевые ресурсы, хранилище и детали ОС, чем LXC. С Docker приложение действительно не зависит от настроек этих низкоуровневых ресурсов. Когда вы перемещаете контейнер Docker от одного хоста Docker к другой машине с Docker, Docker гарантирует, что среда для приложения останется неизменной.

Прямое преимущество этого подхода — это то, что Docker помогает программистам создавать локальные среды разработки, которые выглядят как продакшн-сервер. Когда программист заканчивает писать и начинает тестировать код, он может обернуть его в контейнер, опубликовать напрямую на сервере или в приватном облаке, и он сразу будет работать, так как это одна и та же среда.

СLXC программист может запустить что-то на своей машине, но обнаружить, что код работает неправильно при разворачивании на сервере. Среда сервера будет другой, и программисту придется потратить много времени, чтобы починить эту разницу и исправить проблему. С Docker этих проблем нет.

Архитектура, разработанная для программистов

Отделение приложений от аппаратного обеспечения, лежащего в их основе, — фундаментальный концепт виртуализации. Контейнеры идут еще дальше и отделяют приложения от ОС. Благодаря этой особенности программисты получают гибкость и масштабирование при разработке.

Docker: контейнеры — это просто

Что такое Docker

Docker представляет собой систему управления контейнерами. Он позволяет «упаковать» приложение или веб-сайт со всем его окружением и зависимостями в контейнер, которым в дальнейшем можно легко и просто управлять: переносить на другой сервер, масштабировать, обновлять.

Docker был написан на языке программирования Go и выпущен в 2013 году. Изначально он работал только с Linux-системами, однако на данный момент его можно использовать также в Windows и macOS. Несмотря на то, что проект является относительно новым, он уже широко используется многими специалистами и продолжает завоевывать популярность.

Важной частью экосистемы Docker является Docker Hub — открытый репозиторий образов контейнеров. В нём можно найти десятки готовых приложений от официальных разработчиков. Среди них — nginx, MySQL, Apache, Gitlab, Redmine, Elasticsearch, Jenkins и другие.

Например, для запуска WordPress с помощью Docker достаточно выполнить следующие команды:

После этого откройте в браузере страницу http://12.34.56.78 (здесь укажите реальный IP-адрес вашего VDS) и приступите к настройке CMS!

Теперь расскажем о том, что представляет из себя Docker. Три основных термина в экосистеме Docker:

  • образ (image) – шаблон, который используется для создания контейнеров. Представляет собой слепок файловой системы, в котором расположен код приложения и его окружение;
  • реестр (registry) – репозиторий образов. Docker Hub, о котором шла речь выше, — это публичный репозиторий, где хранится огромное количество образов;
  • контейнер (container) – запущенное приложение, т.е. совокупность процессов и образа.

Преимущества Docker

Как уже было замечено выше, Docker – это в первую очередь удобство: выполнить многие действия – к примеру, создать готовое для запуска приложение или установить дополнительное ПО – становится намного проще и быстрее. Используя Docker, вы сможете оптимизировать свою работу и экономить время.

Возьмем ситуацию, когда вам нужно установить Redmine, Github, Jenkins или что-либо другое. В обычной ситуации вы бы самостоятельно устанавливали пакеты, настраивали окружение, а также отдельно устанавливали бы веб-сервер. С Docker все намного проще – вам просто необходимо запустить готовый контейнер из репозитория hub.docker.com. В базе Docker содержится более 100 тысяч готовых к установке приложений, среди которых вы точно найдете нужное.

Образы контейнеров Docker содержат в себе все необходимые приложению библиотеки, поэтому конфликтов с другим ПО не будет.

Стоит также отдельно отметить, что, используя Docker, вы сможете легко перенести приложение в другую среду: достаточно загрузить образ в репозиторий и скачать его на сервере. И вы можете не беспокоиться, что запущенное приложение использует все ваши ресурсы – Docker позволяет настроить количество ресурсов, выделенное под каждое приложение.

Docker в VDS Timeweb

Так как мы постоянно работаем над тем, чтобы сделать работу на нашем хостинге удобной и комфортной для наших клиентов, внедрение Docker было лишь вопросом времени.

Для того, чтобы начать использовать Docker, сначала вам необходимо установить его – это можно сделать двумя путями.

  1. Вы можете установить Docker в панели управления VDS при создании нового сервера: на 2-м шаге «Программное обеспечение» при выборе Ubuntu 16.04 в качестве операционной системы вы сможете установить DockerUI.
  2. Также вы можете провести установку через консоль любого дистрибутива Linux, следуя инструкции на официальном сайте: https://docs.docker.com/engine/installation/linux/

Соответственно, работа с Docker может производиться также либо в консоли, либо в соответствующем интерфейсе.

Как и во многих других случаях, работа с Docker напрямую через консоль отличается большей стабильностью и более широкими возможностями. Все необходимые команды вы найдете на этой странице официального сайта: https://docs.docker.com/engine/reference/commandline/

Однако начинающим пользователям, которые хотят познакомиться с Docker, будет удобнее работать в DockerUI:

P.S. Если вам интересно более детально разобраться в том, что такое Docker, рекомендуем к чтению следующую англоязычную статью: What is Docker?

Просто о сложном — Docker

_AMD_

Основатель trigon.im и gm-donate.ru. Интересуюсь айти, текстами, продажами. Меломан, интроверт, альтруист

_AMD_

Docker — платформа для запуска приложений в изолированных контейнерах.

Читать еще:  Установка visual studio linux

Простой пример. Будь докер в жизни, вы бы смогли поставить посреди комнаты пакет, а лучше сразу несколько, где в первом у вас будет взрывчатка, а во втором то, что вы хотите подорвать и вот сами вы выступаете в роли спички, фитиля и волшебника, который делает так, чтобы содержимое второго пакета взорвалось, не унеся с собой квартиру и жизнь волшебника за компанию.

Только пакетов не обязательно 2 и в них не обязательно что-то опасное, да и комната (сервер) тоже может быть не одна. Реальные примеры с применением будут описаны ниже.

Вместо «прежде, чем мы начнем»

Нет ничего сложного в использовании докера. Для большинства задач нужны совсем поверхностные знания, которые можно получить, почитав всего пару статей или, еще лучше, раздел Get started официальной документации, затем подкрепить все эти знания практикой. Например, запустить MySQL сервер + Adminer в один клик на этой странице. Там есть кнопочка. Но это только для начала.


Photo by Danielle MacInnes / Unsplash

Для вас это может быть очевидным, но для меня, как человека, который для всех задач искал панель управления было тяжело осознать одну простую вещь:

С Docker придется понять, что теперь не панель управления, а вы должны будете придумать, где разместить ваши данные из контейнера, будь то сайт или что-то еще

Тоесть, теперь не будет никаких кнопочек а-ля «Файловый менеджер», которые сразу откроют вам папочку с данными ваших контейнеров. Вы должны сами придумать, где будете работать. У меня это

И маленькое замечание насчет безопасности — вам придется выполнять все команды или от рута или от sudo или добавить вашего пользователя в группу docker (лучше последнее)

А еще насчет портов. Есть Docker port, а есть Published port. Docker port это порт, который контейнер будет считать, что использует, а Published это порт, через который будет доступен Docker port на родительской машине. Простыми словами, это проброс портов

Основные понятия

Контейнер

Это как виртуальная машина. Его можно удалить, остановить, возобновить, подключиться к терминалу. В общем, делать все, что и с обычным linux сервером или виртуальной машиной

Dockerfile

Это набор инструкций, как нужно создавать контейнер. Пример такого файла можно увидеть здесь. Описание основных инструкций вот здесь

docker-compose.yml

В докере один Dockerfile это один сервис. Если вам нужен один сервис, например, торрентокачалка или генерация LetsEncrypt сертификата, вы можете запустить его через docker run . Но если у вас приложение, состоящее из нескольких сервисов (PHP + Nginx + MySQL), то запускать их все по очереди длинными командами с кучей параметров было бы, как минимум, неудобно. Этот файл объединяет все в одном месте и управляется через команду docker-compose

Я выделил популярные команды. Они частично будут описаны ниже

Репозиторий

Есть репозитории, а есть Automated builds. По-простому, репозитории это готовые сборки систем. Например, чистый Ubuntu. Некоторые репозитории это сразу система с установленным приложением, например, CMS Ghost. На Docker HUB репозиторий это куча файлов, а Automated build это всего лишь Dockerfile

Automated build

На первый взгляд ничем не отличаются от репозиториев. Мне даже трудно объяснить разницу. По-обезьяньи я понимаю это так: «у репозиториев я не могу посмотреть Dockerfile, а у autobuilds могу». Automated builds это те же репозитории, только с них вы можете без проблем забрать Dockerfile и поправить его под свои нужды.

Также со временем Automated build может перестать работать, если какая-то инструкция в нем устареет (например, Dockerfile писался под Ubuntu 14.04 ( FROM ubuntu:latest ), а со временем ubuntu:latest обновилась до 18.04 и вжух, проблемы). Репозитории в этом плане монолитные. Какими залиты, такими и будут даже через 100 лет.

Еще есть всякие инструкции для Dockerfile, вроде ADD и COPY , которые добавляют файлы в контейнер во время его создания и которые не работают для репов

Пример Automated Build: cpuminer-multi

Swarm

Вы можете даже ни разу не столкнуться с этим на практике, но на будущее — это что-то вроде кластера. Короче, связка серверов с установленным Docker.

В нем есть главная нода и подчиненные. Главная это та, на которой выполнен docker swarm init , а подчиненные те, которые присоединились через docker swarm join и готовы принимать указания от главной ( docker stack deploy )

Способы применения

  • Можно без проблем изучать новые фишки, до которых раньше руки не доходили из-за сложности или не хотелось засорять систему. Например хотели простой блог на JavaScript, торрент качалку или даже целый комбайн из приложений с кучей мусора и зависимостями без заморочки — докер.
  • Если вы раньше использовали VirtualBox для запуска приложений, то Docker его не только заменит, но и сделает все быстрее и проще
  • Он поможет запустить приложение любой сложности на любой системе всего в пару нажатий клавиш при помощи всего лишь одного Dockerfile файла. Или docker-compose.yml, если нужно запустить пачку сервисов.
  • Благодаря докеру вы можете собирать данные кучи приложений в одном, нужном вам месте, благодаря чему их проще будет переносить.
  • Или, например, у вас есть веб приложение с кучей заточенных под вас настроек, всяких баз данных, веб серверов, фреймворков и тд и вам нужно расширяться, копировать все это на другие сервера, прописывать все заново. С докером вы выполняете docker swarm init на главной ноде и docker swarm join на всех подчиненных, затем с главной передаете всем остальным задачу деплоя ваших приложений/сервисов при помощи пары команд.
  • Еще пример. Вы когда-нибудь использовали WAMP? Это связка Apache + PHP + PHPMyAdmin + MySQL и еще пары ништяков, которые помогают PHP разработчкам писать и тестить сайты, сидя на винде без всяких виртуалок. Так вот WAMP полезен только на винде и только для PHP. А Docker полезен хоть на Windows, хоть на Linux, хоть на Mac OS и для чего угодно, а не только PHP разработчиков

Кстати, этот блог запущен внутри Docker контейнера, а рядом с ним крутится еще контейнер с Nginx, контейнер с MariaDB, при необходимости, запускаю еще контейнер с Adminer (Аналог phpmyadmin) и LetsEncrypt генерилкой. Благодаря этому я могу купить еще хоть 100 VDS с Docker, одной командой подключить их к одному swarm’у (кластеру) и запустить сразу на всех мой блог так же в одну команду. Тогда даже если 99 нод «умрут», блог все равно будет доступен на последней.

Ссылка на основную публикацию
Adblock
detector