update docker answer

This commit is contained in:
Swfuse 2022-08-28 17:33:26 +03:00 committed by GitHub
parent f1f0917ad8
commit ab6fb7d6c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2410,10 +2410,17 @@ https://access.redhat.com/articles/3129891
- Ответ
Docker базируется на технологиях **namespaces** и **cgroups** (первая обеспечивает изоляцию, вторая — группировку процессов и ограничение ресурсов)
Docker базируется на технологиях **namespaces**, **cgroups**, **capabilities**, **overlay**
**namespaces** - обеспечивает изоляцию. Используется для изоляции. Например, можно айдишники процессов разместить в разных контейнерах.
**cgroup** - штука, которая позволяет управлять группой процессов, и управлять их ресурсами.
**capabilites** - штука, которая позволяет дать некоторые рут привелегии процессам или исполняемым файлам. Например, изменить UID процесса на 0, или дать возможность монтировать файловые системы.
**overlay (overlayFS, overlay2-драйвер)** - файловая система, которая умеет работать "слоями". Не сохранять каждый раз новые файлы, а наслаивать один слой на другой, тем самым экономя место на диске и время создания контейнера.
В основе работы Docker лежит стандартизированный способ исполнения кода. Docker это операционная система для контейнеров. Подобно тому как виртуальная машина создает виртуальное представление аппаратного обеспечения сервера (то есть устраняет необходимость непосредственно управлять таковым), контейнеры создают виртуальное представление серверной операционной системы. После установки на каждый сервер Docker предоставляет доступ к простым командам, необходимым для сборки, запуска или остановки контейнеров.
А вот докер - это уже штука, которая всеми этими технологиями рулит. Да ещё и удобным для нас образом.
Компоненты докера:
1. Docker Daemon — то самое Container Engine; запускает контейнеры.
2. Docker CII — утилита по управлению Docker.
3. Dockerfile — инструкция по тому, как собирать образ.
@ -2425,7 +2432,6 @@ https://access.redhat.com/articles/3129891
На Docker_host работает Docker daemon, запускает контейнеры. Есть Client, который передаёт команды: собери образ, скачай образ, запусти контейнер. Docker daemon ходит в registry и выполняет их. Docker-клиент может обращаться и локально (к юникс-сокету), и по TCP с удалённого хоста.
Пройдёмся по каждому компоненту.
Docker daemon (демон)