Что такое Docker простыми словами?

Много о нём слышал, но не понимаю что это. Что-то там контейнеры, и всё. На всех сайтах написано как-то трудно (а может просто я тупой)
  • Вопрос задан
  • 1498 просмотров
Решения вопроса 2
saboteur_kiev
@saboteur_kiev
software engineer
Надо тебе запустить три-четыре процесса (веб сервер, базу, какой-нить бот, какой-нить брокер и логер). Они могут требовать разные зависимости.

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

Ядро операционной системы умеет делать "контейнер", и процесс внутри этого контейнера думает что он в этой "операционке" единственный, сразу после ядра.
Ему подсовывается виртуальная файловая система, сетевые интерфейсы, дерево процессов коротенькое, он не видит ничего и думает что он запущен в отдельной виртуальной машине.

А технически - ядро одно на все процессы плюс виртуализация файловой и сетевой подсистемы, что гораздо дешевле чем еще одна целая виртуальная машина с целой операционкой для каждого процесса.
Ответ написан
Комментировать
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Недо-виртуалка, которая позволяет выделить одному процессу минимальное окружение, имитирующее полноценную ось.
Широко применяется при необходимости проверить поведение некоей програмы в разных браузерах, разных СУБД, разных чего-нибудь-еще, когда неизбежно появление большого количества однотипно настроенных виртуалок.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 9
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Что такое Docker простыми словами

простыми словами

Если совсем прям простыми, то - это некая легковесная оболочка, которая способна изолировать приложение внутри себя от внешнего мира. Очень похож (по логике) на системы виртуализации VMware, VirtualBox, Parallels итп, но сам не является им.

Возможности:

- Контейнеризация: Docker позволяет паковать приложения вместе со всеми их зависимостями в контейнеры, обеспечивая тем самым их независимость от конкретной инфраструктуры.
- Переносимость: Контейнеры Docker могут быть запущены на любом компьютере, который поддерживает Docker, независимо от операционной системы. Это делает распространение и развертывание приложений намного проще.
- Изоляция ресурсов: Каждый контейнер Docker работает в изолированной среде и не влияет на другие контейнеры или хостовую систему.
- Слоистая файловая система: Docker использует слоистую файловую систему для хранения данных, что позволяет существенно экономить дисковое пространство и упрощает обновление и распространение контейнеров.
- Сетевые возможности: Docker позволяет настраивать сетевые параметры каждого контейнера, что позволяет создавать сложные многокомпонентные приложения.
- Docker Hub: Docker Hub – это репозиторий, где можно хранить и делиться контейнерами. Это облегчает развертывание и распространение приложений.
- Docker Compose: Это инструмент для определения и запуска многоконтейнерных - Docker-приложений. С помощью Compose вы можете использовать файл YAML для конфигурации служб вашего приложения, а затем с помощью одной команды создать и запустить все службы.
- Docker Swarm: Docker Swarm предоставляет нативные возможности Docker для оркестрации и масштабирования кластера Docker.
Ответ написан
Комментировать
DollyPapper
@DollyPapper
Грубо говоря докер это изолированный от системы некий процесс. Можно считать это некий chroot для процесса.
Представьте себе операционную систему в которой есть некоторое пространство из ресурсов. Память, диск, системное время, сеть, сетевые интерфейсы. И в этом пространстве находятся процессы которые используют эти ресурсы. А теперь представьте что в этой большой системе мы откусили кусок ресурсов и некоторый процесс, например БД изолировали от всей остальной системы. Докер это своеобразная матрица (всмысле как в фильме матрица) для процесса некоторого.
Ответ написан
Комментировать
devspec
@devspec
Помогло? Отметь решением
Представь, что ты установил VirtualBox и в него поставил нужную тебе ОС.
Теперь ты можешь, находясь в своей винде, зайти в VirtualBox, запустить там, например, ubuntu и что-то в ней поделать.
Вот такой примерно и докер, если очень-очень упростить объяснение.
Ответ написан
xez
@xez
TL Junior Roo
Докер-контейнер - это виртуальная машина, в которой запущено минимальное количество процессов. В идеале - только один процесс.
Например, вот у меня крутится контейнер с mysql:
[mysql@18e90ee13a1a /]$ ps ax
    PID TTY      STAT   TIME COMMAND
      1 ?        Ssl    0:14 mysqld
     61 pts/0    Ss     0:00 /bin/sh -c [ -e /bin/bash ] && (/bin/bash || exit 0) || /bin/sh
     67 pts/0    S      0:00 /bin/sh -c [ -e /bin/bash ] && (/bin/bash || exit 0) || /bin/sh
     68 pts/0    S      0:00 /bin/bash
     81 pts/0    R+     0:00 ps ax
Ответ написан
Docker, как и любая другая технология контейнеризации (а их довольно много, и существуют они давно, например jails во FreeBSD или workload partitions в AIX), это технология создания множества пользовательских пространств (их ещё называют userland) поверх одного экземпляра ядра.

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

Вышеуказанные сервисы предоставляются самим ядром - т.е. ядро как раз и умеет делить СВОИ ресурсы на группы (а задача ядра ОС как раз и заключается в том, чтобы выставить пользователю такие "виртуальные" ресурсы, как ФС, процесс, TCP-подключение и т.д., обернув собой железячные ресурсы, такие как диски, сетевая карта и т.д.). Поверх этих возможностей ядра с помощью таких решений как Docker уже строится всякая инфраструктура - упаковка файловой системы в "снимок", называемый "образом", виртуальные сети между контейнерами и т.д. и т.п.

Вам важно понять базовые принципы, и не путать себя другими ответами, из того что сейчас есть только DollyPapper написал по делу. Остальные пишут про применение, а не про смысл технологии.
Ответ написан
Комментировать
Griboks
@Griboks
Грубо говоря, докер - это коробка с линуксом; это готовая к работе виртуальная машина; это приложение + окружение в одной команде.
Ответ написан
Комментировать
Topland
@Topland
Директор компании Topland
Docker - это платформа, которая позволяет упаковывать и запускать программное обеспечение внутри изолированных контейнеров.

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

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

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

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

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

В итоге, Docker позволяет создавать и запускать приложения быстро, надежно и легко масштабируемо в различных окружениях, будь то локальная разработка, тестирование, облачные сервисы или даже физические серверы.
Ответ написан
Комментировать
Deita
@Deita
Докер состоит из:

Хост (host)— машина на которой запущен докер

Клиент (client)— запускается в CLI при помощи него можно подключаться к демону

Служба (daemon)— может быть как на локальной машине (чаще всего), так и даже где-то удалённо! Демон отвечает за создание контейнеров, и обработку запросов

Контейнеры (container)— Независимы друг от друга

Образ (Image)— Основа для создания контейнеров

Репозиторий (Repository)— Содержит версии образов

Реестр (Registry)— Содержит версии репозиториев. Реестр тоже может быть локальным, или удалённым. Самый популярный удалённый реестр это Docker Hub
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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