@UlarSur

Что можно делать с помощью Docker?

Заинтересовало технология Docker. Можно ли с помощью нее решить основной недостаток Linux, а именно отсутствие определенных софтов ? Поднимать на ноуте целую виртуалку упирается в ресурсы. Но а что если запустить конкретную программу в контейнере ? Так вообще возможно ?
  • Вопрос задан
  • 225 просмотров
Решения вопроса 2
karabanov
@karabanov Куратор тега Docker
Системный администратор
Docker это набор сервисов и утилит созданных для удобного управления встроенными в ядро Linux технологиями Namespace (для изоляции процессов) и CGroups (для управления ресурсами).

По мимо Docker существует ряд инструментов призванных делать тоже самое Systemd-Nspawn, LXC, Podman, etc - все они работают похожим образом и точно так же изолируют Linux-овые процессы. Docker самый распространённый и популярный из-за стандартизации процесса сборки образа и удобных утилит для управления жизненным циклом контейнера, Docker это как libc - только в разрезе контейнеров.

Контейнер можно запустить не имея ни одного из этих инструментов с помощью утилиты unshare - она позволяет точно также управлять Namespac-ами (управлять ресурсами придётся вручную добавив процесс в CGroups).

Контейнер это изолированный Linux процесс - соответственно запустить получиться только Linux-овый софт и больше ничего. Контейнер это не маленькая виртуальная машина, контейнер это не Java для всего. Конетейнер это только средство запустить Linux-овый процесс в изолированной среде (и, возможно, ограничить его по ресурсам), например запустить приложение требующее наличия в системе конкретных зависимостей, но отсутствующих по факту. Или запустить в целях разработки конкретную версию PHP, Python, Ruby, etc при этом избежав конфликта зависимостей и Dependency hell из-за несовместимых библиотек на хостовой машине.

Представь себе ситуацию, когда ядро Linux загрузилось и запустило только один (какой угодно) процесс, присвоив ему PID 1 - вот так контейнер выглядит изнутри.

PS
Есть конетйнеры на Windows Core они запустятся только на Windows и служат для изоляции только Windows софта и для них есть набор утилит, которые распространяются в виде набора бинарных файлов тоже, почему-то, под именемем Docker (не путать с Docker-Desktop, так как Docker-Desktop - это набор сервисов позволяющих виртуализировать ядро Linux и тем самым получить возможность запустить Linux процессы на Windows или MacOS).
Ответ написан
Комментировать
Docker - это инструмент изоляции, а не виртуализации или эмуляции.

Если какого-то ПО а принципе нет для Linux, то от добавления Docker оно не появится.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@sergiodev
Docker - просто лайтовая виртуалка для Linux по сути. Он не заменит вам Windows, если вы такие софты планируете запускать.
Ответ написан
Sanes
@Sanes
Поднимать на ноуте целую виртуалку упирается в ресурсы.

Зависит от стека. Поднимать на docker условный LAMP нет никакого смысла. Если нужна переносимость, то можно использовать LXD контейнеры и Ansible.
Ответ написан
@aleks-th
Все тоже самое что вы можете сделать и без docker только в в docker.

Нового ПО которого нельзя поставить без докера докер не добавит )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы