Что такое Докер?

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

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

В отличие от виртуальных машин, которые могут взаимодействовать с оборудованием хоста (например, с адаптером Ethernet для создания дополнительных виртуальных адаптеров), контейнеры Docker работают в изолированной среде поверх ОС хоста. Даже если ваш хост работает под управлением ОС Windows, вы можете запускать образы Linux в контейнерах с помощью Hyper-V, который автоматически создает небольшую виртуальную машину для виртуализации базового образа системы, в данном случае Linux.

Докер Двигатель

Docker — это клиент-серверное приложение, что означает, что у нас есть клиенты, которые ретранслируются на сервер. Итак, демон Docker называется: dockerd — это механизм Docker, представляющий сервер. Демон docker и клиенты могут быть запущены на одном или удаленном хосте, и они взаимодействуют через двоичный файл клиента командной строки, а также полный API RESTful для взаимодействия с демоном: dockerd.

Докер-образы

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

Реестры

Docker хранит образы, которые мы создаем, в реестрах. Существуют государственные и частные реестры. Компания Docker имеет общедоступный реестр под названием Docker hub, где вы также можете хранить образы в частном порядке. В Docker Hub есть миллионы образов, которые вы можете начать использовать прямо сейчас.

Докер-контейнеры

Контейнеры — это организационные единицы Docker. Когда мы создаем образ и запускаем его; мы работаем в контейнере. Мы можем перемещать его, другими словами, «отправлять» программное обеспечение, модифицировать, управлять им, создавать или избавляться от него, уничтожать его, как это могут делать грузовые корабли с реальными контейнерами.

Проще говоря, изображение — это шаблон, а контейнер — копия этого шаблона. У вас может быть несколько контейнеров (копий) одного и того же изображения.

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

ПРИМЕЧАНИЕ. Для запуска Docker для Windows требуется Windows 10 Pro или Enterprise версии 14393 или Windows Server 2016 RTM.

Установка Докера в Linux.

Чтобы установить Docker, нам нужно использовать пакеты DEB команды Docker. Для этого, во-первых, нам нужно установить некоторые необходимые пакеты.

Шаг 1 Добавление необходимых пакетов Ubuntu

$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

Шаг 2. Добавьте ключ Docker GPG.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Шаг 3. Добавление репозитория Docker APT.

$ sudo add-apt-repository \ 
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \ 
$(lsb_release -cs) \
stable"

Вам может быть предложено подтвердить, что вы хотите добавить репозиторий и автоматически добавить ключ GPG репозитория на ваш хост.

Команда lsb_release должна заполнить версию дистрибутива Ubuntu вашего хоста.

Шаг 4. Обновите источники APT.

$ sudo apt-get update

Теперь мы можем установить сам пакет Docker.

Шаг 5 Установка пакетов Docker в Ubuntu

$ sudo apt-get install docker-ce

Приведенная выше команда устанавливает Docker и другие дополнительные необходимые пакеты. До Docker 1.8.0 имя пакета было lxc-docker, а между Docker 1.8 и 1.13 имя пакета было docker-engine.

Основные команды Docker

Самая основная команда, которую мы должны выполнить после установки Docker, — это $ docker info, как мы уже говорили ранее.

$ sudo docker info

Вы должны получить аналогичный или следующий результат

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

$ sudo docker pull alpine

Этой командой мы говорим докеру загрузить образ alpine, вытащить его из общедоступного реестра, последняя версия которого установлена ​​по умолчанию.

*alpine — это минимальный образ Docker на основе Alpine Linux с полным индексом пакетов и размером всего 5 МБ.

Если мы хотим запустить образ как контейнер, мы будем использовать следующую команду.

$ sudo docker run -i -t alpine /bin/bash

Если мы запустим команду, нас отправят прямо к терминалу alpine. Флаг -i сохраняет STDIN открытым для контейнера, даже если вы не подключены к нему. Этот постоянный стандартный ввод составляет половину того, что вам нужно для интерактивной оболочки. Флаг -t — это другая половина, которая указывает Docker назначить контейнеру псевдотерминал. Это предлагает нам интерактивную оболочку в новом контейнере. Мы выходим из контейнера с помощью простой команды выхода.

Теперь мы можем попробовать запустить образ Ubuntu.

$ sudo docker run -it ubuntu /bin/bash

Вы можете заметить, что docker проверяет образ локально, и если его там нет, образ автоматически извлекается из библиотеки изображений, и снова у нас работает интерактивная оболочка. Мы также можем называть контейнеры по мере их запуска.

$ sudo docker run –-name our_container -it ubuntu /bin/bash

и снова выходим.

Мы также можем запустить ранее созданный контейнер без интерактивной оболочки.

$ sudo docker start container_name

И остановите запись контейнера docker stop container_name

$ sudo docker stop container_name

Если мы хотим увидеть все запущенные контейнеры, мы просто запускаем

$ docker ps

И для всех контейнеров мы добавляем «-a» в конце этой же команды, как этот docker ps -a.

Эта команда показывает идентификатор контейнера, какой образ используется при создании, рабочий статус, открытые порты и случайно сгенерированное имя контейнера для упрощения управления.

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

$ docker stats

Вы также можете увидеть, какие изображения мы загрузили локально, и информацию о них.

$ sudo docker images

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