Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Что такое Docker

Что такое докер и для чего он нужен? Во всех статьях про докер встречаются термины "имейдж" и "контейнер", что эти термины означают?
UPDATE В скриншоте ниже я подключился получается к какому-то контейнеру? Я сейчас нахожусь в том контейнере? Как мне из него выйти? И можно ли выйти не останавливая его и как потом обратно туда попасть?


Ответ

docker - это такая упрощенная виртуалка. Виртуалка для одной-двух программ. Виртуалка, которая стартует в доли секунды. Виртуалка, которая обещает, что если Вы предоставите специальный маленький (текстовый) докер-файл (файл конфига), то любой админ, который знает докер, сможет приготовить правильное окружение и запустить софт.
Зачем все это нужно. Вспомнить классическую ситуацию - программист написал софт и говорит "у меня на ноуте работает". А админы (сисопсы/девопсы) не могут развернуть на прод сервере и заставить работать, так как нет хорошего описания как это сделать. И на это обычно говорят так - давай твой ноут поставим в стойку.
А вот если программист предоставил докер файл... то все сильно упрощается.
Также докер предоставляет "из коробки" всякие разные вкусности. Например, можно приложению выделить определенные ресурсы процессора/памяти, открыть порты, поставить специфическую версию какой-то библиотеки - программисты любят говорить, что их софт работает только с ограниченным набором версий библиотек.
Также можно переносить запущенные в докере приложения с машины на машину без особых проблем.
Что такое имедж - это подготовленный кем-то набор файлов, готовый к использованию в докере. Это может быть целый линукс, а может быть специально собранный питон, который можно "наложить" на нужный образ линукса. То есть, если админу нужно обновить ядро, он берет нужный имедж с ядном, добавляет уже готовый имедж с программами и вуаля, все работает (если только не испортили совместимость).
контейнер - а это уже готовый к употреблению продукт. Его можно запустить/остановить. (А вот образ не запустишь, его нужно поместить для начала в контейнер).
На самом деле, докер - это не вируталка, это инструмент управления различными средствами виртуализациями. А управляет он к примеру lxc (linux container) - почти встроенное ядро средство виртуализации).
UPD
виртуалка - как virtual box или vmware. Но теже "виртуалные сервера" можно сделать на базе докера.
изолированное окружение - это возможность сделать так, что приложение будет думать, что оно работает на сервере само. Допустим, хочется запустить десять веб серверов, а у них у всех прибит 80 порт и изменить нельзя. А докер позволит их всех запустить, каждый в своем контейнере, а наружу выпустит под разными портами. А ещё в одном докере запустить балансер, который будет с 80 порта разбрасывать запросы. А ещё к этому можно прикрутить docker-composer, который может управлять пачкой докер контейнеров.
А вот винду - да, пока не запустить в докере, но это дело наживное. Если майкрософт захочет, то сделать образ и тогда все будет буквально в пару кликов (ой, не кликов, а строк в докер файлов). Более того, поговаривают, что Майкрософт к этому готовиться - выпустили виндовс сервер без gui, интегрируют линукс внутрь... посмотрим.

Комментариев нет:

Отправить комментарий