Skip to content

Latest commit

 

History

History
53 lines (28 loc) · 8.49 KB

4.3.1 Docker.md

File metadata and controls

53 lines (28 loc) · 8.49 KB

Docker

  1. Docker online playground 💻

Docker – это открытая платформа для разработки, доставки и запуска приложений. Состоит из утилиты командной строки docker, которая вызывает одноименный сервис. Все файлы Docker (образы, контейнеры и др.) по умолчанию хранятся в каталоге /var/lib/docker.

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

И тогда, и сейчас идея состояла в том, чтобы изолировать отдельные процессы внутри одной и той же операционной системы на основе operating system level virtualization, или «виртуализации на уровне системы». Учтите, это не то же самое, что full virtualization, или «полная виртуализация», которая запускает виртуальные машины бок о бок на одном физическом хосте.

Виртуализация

«Виртуальная машина» - это общий термин для описания эмулируемой виртуальной машины поверх «реальной аппаратной машины». Этот термин был первоначально определен Попеком и Голдбергом как эффективная изолированная копия реальной компьютерной машины.

Виртуальные машины могут быть «System Virtual Machines (системными виртуальными машинами)» или «Process Virtual Machines (процессными виртуальными машинами)». В повседневном использовании под словом «виртуальные машины» мы обычно имеем в виду «системные виртуальные машины», которые представляют собой эмуляцию оборудования хоста для эмуляции всей операционной системы. Однако «Process Virtual Machines», иногда называемый «Application Virtual Machine (Виртуальной машиной приложения)», используется для имитации среды программирования для выполнения отдельного процесса: примером является виртуальная машина Java.

Виртуализация на уровне ОС также называется контейнеризацией. Такие технологии, как LXC и Docker, используют этот тип изоляции.

Google - лидер в контейнерной индустрии. Все в Google работает на контейнерах. Каждую неделю в инфраструктуре Google работает более 2 миллиардов контейнеров.

Виртуализация vs контейнерезация

Технически для запуска контейнеров образы не требуются, т.к. есть пустые (scratch) образы позволяющие создать собственные образы ОС.

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

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

Не в каждом контейнере есть операционная система, но каждому из них требуется ядро ​​Linux.

Важно понять разницу между ядром, операционной системой и дистрибутивом.

  • Ядро Linux (kernel Linux) — это основная часть операционной системы Linux. Это то, что изначально написал Линус.
  • ОС Linux представляет собой комбинацию ядра и пользовательской среды (библиотеки, утилиты GNU, файлы конфигурации и т. д.).
  • Дистрибутив Linux — это определенная версия операционной системы Linux, например Debian или CentOS.

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

Container (контейнер) – это экземпляр образа (image - создается благодаря Dockerfile) контейнера. Выполняемый контейнер – это запущенный процесс, изолированный от других процессов на сервере и ограниченный выделенным объемом ресурсов (ЦПУ, ОЗУ, диска и др.). Выполняемый контейнер сохраняет все слои образа с доступом на чтение и формирует сверху свой исполняемый слой с доступом на запись.

Когда сервер(контейнер) запускается на адресе 0.0.0.0, он прослушивает все доступные сетевые интерфейсы на хосте, а не только интерфейсы внутри контейнера.

А когда мы запускает docker run -p 192.168.1.4:3000:3000 image, то сервер (контейнер) слушает только 192.168.1.4

Host (хост) – сервер, на котором запущен Docker Container Engine и выполняются контейнеры.

Container image (образ создается благодаря Dockerfile) – файл, в который упаковано приложение и его среда. Он содержит файловую систему, которая будет доступна приложению, и другие метаданные (например команды, которые должны быть выполнены при запуске контейнера). Образы контейнеров состоят из слоев (как правило один слой – одна инструкция). Разные образы могут использовать один и тот же родительский образ в качестве основы. Образы хранятся в Registry Server (реестре) и версионируются с помощью tag (тегов). Если тег не указан, то по умолчанию используется :latest:


4.3 Docker Theme Folder | Back To iOSWiki Contents | 4.3.2 Dockerfile Theme