Докер - Краткое руководство

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

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

Особенности Docker

  • Docker может уменьшить размер разработки за счет уменьшения занимаемой площади операционной системы через контейнеры.

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

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

  • Поскольку контейнеры Docker довольно легкие, их очень легко масштабировать.

Компоненты Docker

Docker имеет следующие компоненты

  • Docker for Mac - Позволяет запускать контейнеры Docker в Mac OS.

  • Docker for Linux - Позволяет запускать контейнеры Docker в ОС Linux.

  • Docker for Windows - Позволяет запускать контейнеры Docker в ОС Windows.

  • Docker Engine - Он используется для построения образов Docker и создания контейнеров Docker.

  • Docker Hub - Это реестр, который используется для размещения различных образов Docker.

  • Docker Compose - Это используется для определения приложений, использующих несколько контейнеров Docker.

Мы подробно обсудим все эти компоненты в следующих главах.

Официальный сайт Docker: https://www.docker.com/На сайте есть вся информация и документация по программному обеспечению Docker. Здесь также есть ссылки для скачивания различных операционных систем.

Чтобы начать установку Docker, мы собираемся использовать экземпляр Ubuntu. Вы можете использовать Oracle Virtual Box для установки виртуального экземпляра Linux, если у вас его еще нет.

На следующем снимке экрана показан простой сервер Ubuntu, установленный на Oracle Virtual Box. Есть пользователь ОС с именемdemo который был определен в системе, имеющей полный доступ root к серверу.

Чтобы установить Docker, нам нужно выполнить шаги, указанные ниже.

Step 1- Перед установкой Docker вы должны сначала убедиться, что у вас работает правильная версия ядра Linux. Docker предназначен только для работы с ядром Linux версии 3.8 и выше. Мы можем сделать это, выполнив следующую команду.

безымянный

Этот метод возвращает системную информацию о системе Linux.

Синтаксис

uname -a

Параметры

a - Это используется для обеспечения возврата системной информации.

Возвращаемое значение

Этот метод возвращает следующую информацию о системе Linux -

  • имя ядра
  • имя узла
  • выпуск ядра
  • версия ядра
  • machine
  • processor
  • аппаратная платформа
  • Операционная система

пример

uname –a

Вывод

Когда мы запустим вышеуказанную команду, мы получим следующий результат -

Из выходных данных мы видим, что версия ядра Linux - 4.2.0-27, что выше, чем версия 3.8, так что мы готовы к работе.

Step 2 - Вам необходимо обновить ОС последними пакетами, что можно сделать с помощью следующей команды -

apt-get

Этот метод устанавливает пакеты из Интернета в систему Linux.

Синтаксис

sudo apt-get update

Параметры

  • sudo - The sudo Команда используется для обеспечения того, чтобы команда выполнялась с правами root.

  • update - The update используется, чтобы убедиться, что все пакеты обновлены в системе Linux.

Возвращаемое значение

Никто

пример

sudo apt-get update

Вывод

Когда мы запустим вышеуказанную команду, мы получим следующий результат -

Эта команда подключится к Интернету и загрузит последние системные пакеты для Ubuntu.

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

sudo apt-get install apt-transport-https ca-certificates

Step 4- Следующим шагом будет добавление нового ключа GPG. Этот ключ необходим для обеспечения шифрования всех данных при загрузке необходимых пакетов для Docker.

Следующая команда загрузит ключ с идентификатором 58118E89F3A912897C070ADBF76221572C52609D из keyserver hkp: //ha.pool.sks-keyservers.net: 80 и добавляет его в advБрелок. Обратите внимание, что этот конкретный ключ требуется для загрузки необходимых пакетов Docker.

Step 5 - Затем, в зависимости от вашей версии Ubuntu, вам нужно будет добавить соответствующий сайт в docker.list для apt package manager, чтобы он мог обнаруживать пакеты Docker с сайта Docker и соответственно загружать их.

  • Точный 12.04 (LTS) ─ деб https://apt.dockerproject.org/repoubuntu-specific main

  • Trusty 14.04 (LTS) ─ деб https://apt.dockerproject.org/repo/ Ubuntu-надежный главный

  • Хитрый 15.10 ─ деб https://apt.dockerproject.org/repo ubuntu-хитрый главный

  • Ксениал 16.04 (LTS) - https://apt.dockerproject.org/repo ubuntu-xenial main

Поскольку наша ОС - Ubuntu 14.04, мы будем использовать имя репозитория как «deb https://apt.dockerproject.org/repoubuntu-trusty main ».

И затем нам нужно будет добавить этот репозиторий в docker.list как уже упоминалось выше.

echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main” 
   | sudo tee /etc/apt/sources.list.d/docker.list

Step 6 - Далее выдаем apt-get update command для обновления пакетов в системе Ubuntu.

Step 7 - Если вы хотите проверить, что менеджер пакетов указывает на правильный репозиторий, вы можете сделать это, выполнив команду apt-cache command.

apt-cache policy docker-engine

В результате вы получите ссылку на https://apt.dockerproject.org/repo/

Step 8 - Выпустить apt-get update command чтобы убедиться, что все пакеты в локальной системе обновлены.

Step 9 - Для Ubuntu Trusty, Wily и Xenial мы должны установить пакеты ядра linux-image-extra- *, что позволяет использовать aufs storage driver. Этот драйвер используется в более новых версиях Docker.

Это можно сделать с помощью следующей команды.

sudo apt-get install linux-image-extra-$(uname -r) 
   linux-image-extra-virtual

Step 10 - Последний шаг - установить Docker, и мы можем сделать это с помощью следующей команды -

sudo apt-get install –y docker-engine

Вот, apt-get использует вариант установки для загрузки образа Docker-Engine с веб-сайта Docker и установки Docker.

Docker-engine - это официальный пакет Docker Corporation для систем на базе Ubuntu.

В следующем разделе мы увидим, как проверить версию установленного Docker.

Версия Докера

Чтобы увидеть, какая версия Docker работает, вы можете выполнить следующую команду -

Синтаксис

docker version

Параметры

  • version - Он используется для обеспечения того, чтобы команда Docker возвращала установленную версию Docker.

Возвращаемое значение

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

пример

sudo docker version

Вывод

Когда мы запустим вышеуказанную программу, мы получим следующий результат -

Информация о докере

Чтобы увидеть дополнительную информацию о Docker, запущенном в системе, вы можете выполнить следующую команду -

Синтаксис

docker info

Параметры

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

Возвращаемое значение

В выводе будут представлены различные сведения о Docker, установленном в системе, например:

  • Количество контейнеров
  • Количество изображений
  • Драйвер хранилища, используемый Docker
  • Корневой каталог, используемый Docker
  • Драйвер исполнения, используемый Docker

пример

sudo docker info

Вывод

Когда мы запустим вышеуказанную команду, мы получим следующий результат -

Докер для Windows

Docker имеет встроенную поддержку Windows, но для установки Docker для Windows вам потребуется следующая конфигурация.

Системные Требования

ОС Windows Windows 10 64 бит
объем памяти 2 ГБ ОЗУ (рекомендуется)

Вы можете скачать Docker для Windows из - https://docs.docker.com/docker-for-windows/

Панель инструментов Docker

Docker ToolBox разработан для более старых версий Windows, таких как Windows 8.1 и Windows 7. Для установки Docker для Windows необходима следующая конфигурация.

Системные Требования

ОС Windows Windows 7, 8, 8.1
объем памяти 2 ГБ ОЗУ (рекомендуется)
Виртуализация Это должно быть включено.

Вы можете скачать Docker ToolBox из - https://www.docker.com/products/docker-toolbox

Пройдемся по установке каждого продукта.

Докер для Windows

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

Step 1 - Щелкните условия соглашения, а затем кнопку «Установить», чтобы продолжить установку.

Step 2 - По завершении нажмите кнопку «Готово», чтобы завершить установку.

Панель инструментов Docker

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

Step 1 - Щелкните кнопку Далее на начальном экране.

Step 2 - Оставьте местоположение по умолчанию на следующем экране и нажмите кнопку Далее.

Step 3 - Оставьте компоненты по умолчанию и нажмите кнопку «Далее», чтобы продолжить.

Step 4 - Оставьте дополнительные задачи без изменений и нажмите кнопку «Далее».

Step 5 - На последнем экране нажмите кнопку «Установить».

Работа с Docker Toolbox

Давайте теперь посмотрим, как Docker Toolbox можно использовать для работы с контейнерами Docker в Windows. Первый шаг - запустить приложение Docker Toolbox, ярлык которого создается на рабочем столе при установке Docker toolbox.

Затем вы увидите, как выполняется настройка при запуске панели инструментов Docker.

После этого вы увидите, что Docker настроен и запущен. Вы получите интерактивную оболочку для Docker.

Чтобы проверить правильность работы Docker, мы можем использовать Docker run command скачать и запустить простой HelloWorld Docker container.

Работа Докера run command приведено ниже -

docker run

Эта команда используется для запуска команды в контейнере Docker.

Синтаксис

docker run image

Параметры

  • Image - Это имя изображения, которое используется для запуска контейнера.

Возвращаемое значение

В результате команда будет запущена в желаемом контейнере.

пример

sudo docker run hello-world

Эта команда загрузит hello-world изображение, если его еще нет, и запустите hello-world как контейнер.

Вывод

Когда мы запустим вышеуказанную команду, мы получим следующий результат -

Если вы хотите запустить ОС Ubuntu в Windows, вы можете загрузить образ Ubuntu, используя следующую команду -

Docker run –it ubuntu bash

Здесь вы говорите Docker, что нужно запустить команду в интерактивном режиме через –it вариант.

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

Docker Hub - это облачная служба реестра, которая позволяет загружать образы Docker, созданные другими сообществами. Вы также можете загружать собственные образы, созданные Docker, в Docker Hub. В этой главе мы увидим, как загрузить и использовать образ Jenkins Docker из концентратора Docker.

Официальный сайт Docker Hub - https://www.docker.com/community-edition#/add_ons

Step 1 - Сначала вам нужно пройти простую регистрацию на Docker Hub.

Step 2 - После регистрации вы войдете в Docker Hub.

Step 3 - Затем давайте просмотрим и найдем изображение Дженкинса.

Step 4 - Если вы прокрутите ту же страницу вниз, вы увидите Docker pullкоманда. Это будет использоваться для загрузки образа Jenkins на локальный сервер Ubuntu.

Step 5 - Теперь перейдите на сервер Ubuntu и выполните следующую команду -

sudo docker pull jenkins

Чтобы запустить Jenkins, вам нужно выполнить следующую команду -

sudo docker run -p 8080:8080 -p 50000:50000 jenkins

Обратите внимание на следующие моменты относительно вышеуказанного sudo команда -

  • Мы используем sudo команда, чтобы убедиться, что она работает с правами root.

  • Вот, jenkins - это имя образа, который мы хотим загрузить из концентратора Docker и установить на нашу машину с Ubuntu.

  • -p используется для сопоставления номера порта внутреннего образа Docker с нашим основным сервером Ubuntu, чтобы мы могли соответственно получить доступ к контейнеру.

После этого Jenkins будет успешно работать как контейнер на машине Ubuntu.

В Docker все основано на изображениях. Изображение - это комбинация файловой системы и параметров. Рассмотрим пример следующей команды в Docker.

docker run hello-world
  • Команда Docker специфична и сообщает программе Docker в операционной системе, что что-то нужно сделать.

  • В run используется, чтобы упомянуть, что мы хотим создать экземпляр изображения, который затем называется container.

  • Наконец, «hello-world» представляет образ, из которого сделан контейнер.

Теперь давайте посмотрим, как мы можем использовать образ CentOS, доступный в Docker Hub, для запуска CentOS на нашей машине с Ubuntu. Мы можем сделать это, выполнив следующую команду на нашей машине с Ubuntu -

sudo docker run centos –it /bin/bash

Обратите внимание на следующие моменты относительно вышеуказанного sudo команда -

  • Мы используем sudo команда, чтобы убедиться, что она работает с root доступ.

  • Вот, centos - это имя образа, который мы хотим загрузить из Docker Hub и установить на нашу машину с Ubuntu.

  • ─it используется, чтобы упомянуть, что мы хотим запустить interactive mode.

  • /bin/bash используется для запуска оболочки bash после запуска CentOS.

Отображение образов Docker

Чтобы увидеть список образов Docker в системе, вы можете выполнить следующую команду.

docker images

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

Синтаксис

docker images

Параметры

Никто

Возвращаемое значение

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

пример

sudo docker images

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

Из вышеприведенного вывода видно, что на сервере есть три изображения: centos, newcentos, и jenkins. Каждое изображение имеет следующие атрибуты -

  • TAG - Это используется для логической маркировки изображений.

  • Image ID - Это используется для однозначной идентификации изображения.

  • Created - Количество дней с момента создания образа.

  • Virtual Size - Размер изображения.

Скачивание образов Docker

Образы можно загрузить из Docker Hub с помощью Docker runкоманда. Давайте посмотрим подробно, как это сделать.

Синтаксис

Следующий синтаксис используется для запуска команды в контейнере Docker.

docker run image

Параметры

  • Image - Это имя изображения, которое используется для запуска контейнера.

Возвращаемое значение

В результате команда будет запущена в желаемом контейнере.

пример

sudo docker run centos

Эта команда загрузит centos образ, если его еще нет, и запустите ОС как контейнер.

Вывод

Когда мы запустим вышеуказанную команду, мы получим следующий результат -

Теперь вы увидите загруженный образ CentOS Docker. Теперь, если мы запустим Dockerimages чтобы увидеть список изображений в системе, мы должны увидеть centos изображение тоже.

Удаление образов Docker

Образы Docker в системе можно удалить с помощью docker rmiкоманда. Давайте рассмотрим эту команду подробнее.

docker rmi

Эта команда используется для удаления образов Docker.

Синтаксис

docker rmi ImageID

Параметры

  • ImageID - Это идентификатор изображения, которое необходимо удалить.

Возвращаемое значение

На выходе будет указан идентификатор удаленного изображения.

пример

sudo docker rmi 7a86f8ffcb25

Вот, 7a86f8ffcb25 это идентификатор изображения newcentos образ.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

Давайте посмотрим еще несколько команд Docker на изображениях.

образы докеров -q

Эта команда используется для возврата только идентификаторов изображений для изображений.

Синтаксис

docker images

Параметры

  • q - Он сообщает команде Docker, что нужно вернуть только ID изображения.

Возвращаемое значение

В выводе будут показаны только идентификаторы изображений на хосте Docker.

пример

sudo docker images -q

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

докер осмотреть

Эта команда используется для просмотра деталей изображения или контейнера.

Синтаксис

docker inspect Repository

Параметры

  • Repository - Это имя изображения.

Возвращаемое значение

Вывод покажет подробную информацию об изображении.

пример

sudo docker inspect jenkins

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

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

Запуск контейнера

Запуск контейнеров управляется с помощью Docker runкоманда. Чтобы запустить контейнер в интерактивном режиме, сначала запустите контейнер Docker.

sudo docker run –it centos /bin/bash

Затем нажмите Crtl + p, и вы вернетесь в оболочку своей ОС.

Затем вы будете работать в экземпляре системы CentOS на сервере Ubuntu.

Список контейнеров

Вы можете перечислить все контейнеры на машине через docker psкоманда. Эта команда используется для возврата запущенных в данный момент контейнеров.

docker ps

Синтаксис

docker ps

Параметры

Никто

Возвращаемое значение

На выходе будут показаны запущенные в данный момент контейнеры.

пример

sudo docker ps

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

Давайте посмотрим еще несколько вариантов docker ps команда.

докер ps -a

Эта команда используется для вывода списка всех контейнеров в системе.

Синтаксис

docker ps -a

Параметры

  • ─a - Это говорит docker ps команда для вывода списка всех контейнеров в системе.

Возвращаемое значение

На выходе будут показаны все контейнеры.

пример

sudo docker ps -a

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

история докеров

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

Синтаксис

docker history ImageID

Параметры

  • ImageID - Это идентификатор изображения, для которого вы хотите увидеть все команды, которые были выполнены для него.

Возвращаемое значение

В выводе будут показаны все команды, выполняемые с этим изображением.

пример

sudo docker history centos

Приведенная выше команда покажет все команды, которые были запущены против centos образ.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

В этой главе мы подробно рассмотрим, что мы можем делать с контейнерами.

докер сверху

С помощью этой команды вы можете увидеть самые популярные процессы в контейнере.

Синтаксис

docker top ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, для которого вы хотите видеть основные процессы.

Возвращаемое значение

В выводе будут показаны процессы верхнего уровня в контейнере.

пример

sudo docker top 9f215ed0b0d3

Приведенная выше команда покажет процессы верхнего уровня в контейнере.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

докер стоп

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

Синтаксис

docker stop ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, который необходимо остановить.

Возвращаемое значение

В выходных данных будет указан идентификатор остановленного контейнера.

пример

sudo docker stop 9f215ed0b0d3

Приведенная выше команда остановит контейнер Docker 9f215ed0b0d3.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

докер rm

Эта команда используется для удаления контейнера.

Синтаксис

docker rm ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, который необходимо удалить.

Возвращаемое значение

В результате будет получен идентификатор удаленного контейнера.

пример

sudo docker rm 9f215ed0b0d3

Приведенная выше команда удалит контейнер Docker 9f215ed0b0d3.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

статистика докеров

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

Синтаксис

docker stats ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, для которого необходимо предоставить статистику.

Возвращаемое значение

Вывод покажет использование ЦП и памяти контейнера.

пример

sudo docker stats 9f215ed0b0d3

Вышеупомянутая команда предоставит использование ЦП и памяти контейнера. 9f215ed0b0d3.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

докер прикрепить

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

Синтаксис

docker attach ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, к которому нужно привязать.

Возвращаемое значение

Никто

пример

sudo docker attach 07b0b6f434fe

Вышеупомянутая команда будет прикреплена к контейнеру Docker 07b0b6f434fe.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

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

докер пауза

Эта команда используется для приостановки процессов в работающем контейнере.

Синтаксис

docker pause ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, для которого нужно приостановить процессы в контейнере.

Возвращаемое значение

ContainerID приостановленного контейнера.

пример

sudo docker pause 07b0b6f434fe

Приведенная выше команда приостановит процессы в работающем контейнере. 07b0b6f434fe.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

docker unpause

Эта команда используется для unpause процессы в запущенном контейнере.

Синтаксис

docker unpause ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, для которого нужно возобновить процессы в контейнере.

Возвращаемое значение

ContainerID работающего контейнера.

пример

sudo docker unpause 07b0b6f434fe

Приведенная выше команда возобновит процессы в запущенном контейнере: 07b0b6f434fe

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

Докер убить

Эта команда используется для завершения процессов в работающем контейнере.

Синтаксис

docker kill ContainerID

Параметры

  • ContainerID - Это идентификатор контейнера, для которого вам нужно убить процессы в контейнере.

Возвращаемое значение

ContainerID работающего контейнера.

пример

sudo docker kill 07b0b6f434fe

Приведенная выше команда убьет процессы в запущенном контейнере 07b0b6f434fe.

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

Докер - жизненный цикл контейнера

На следующем рисунке поясняется весь жизненный цикл контейнера Docker.

  • Изначально контейнер Docker будет в created штат.

  • Затем контейнер Docker переходит в состояние выполнения, когда Docker run используется команда.

  • Докер kill используется для уничтожения существующего контейнера Docker.

  • Докер pause Команда используется для приостановки существующего контейнера Docker.

  • Докер stop Команда используется для приостановки существующего контейнера Docker.

  • Докер run команда используется для возврата контейнера из stopped заявить running штат.

На следующем изображении показана стандартная и традиционная архитектура virtualization.

  • Сервер - это физический сервер, который используется для размещения нескольких виртуальных машин.

  • ОС хоста - это базовая машина, такая как Linux или Windows.

  • Гипервизор - это VMWare или Windows Hyper V, который используется для размещения виртуальных машин.

  • Затем вы должны установить несколько операционных систем в виде виртуальных машин поверх существующего гипервизора в качестве гостевой ОС.

  • Затем вы разместите свои приложения поверх каждой гостевой ОС.

На следующем изображении показано новое поколение виртуализации, доступное через докеры. Давайте посмотрим на различные слои.

  • Сервер - это физический сервер, который используется для размещения нескольких виртуальных машин. Так что этот слой остается прежним.

  • ОС хоста - это базовая машина, такая как Linux или Windows. Так что этот слой остается прежним.

  • Теперь приходит новое поколение - движок Docker. Это используется для запуска операционной системы, которая раньше была виртуальными машинами в качестве контейнеров Docker.

  • Все приложения теперь работают как контейнеры Docker.

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

Движок Docker хорош тем, что он предназначен для работы в различных операционных системах. Мы уже видели установку в Windows и видели все команды Docker в системах Linux. Теперь давайте посмотрим на различные команды Docker в ОС Windows.

Образы Docker

Запустим докер images на хосте Windows.

Отсюда мы видим, что у нас есть два изображения - ubuntu и hello-world.

Запуск контейнера

Теперь запустим контейнер на хосте Windows Docker.

Мы видим, что, запустив контейнер, теперь мы можем запустить контейнер Ubuntu на хосте Windows.

Список всех контейнеров

Перечислим все контейнеры на хосте Windows.

Остановка контейнера

Теперь остановим работающий контейнер на хосте Windows.

Итак, вы можете видеть, что движок Docker довольно согласован, когда дело касается разных хостов Docker, и он работает в Windows так же, как и в Linux.

В этой главе мы рассмотрим различные варианты настройки Docker.

остановка докера службы

Эта команда используется для остановки Docker daemon процесс.

Синтаксис

service docker stop

Параметры

Никто

Возвращаемое значение

Сообщение о том, что процесс Docker остановлен.

пример

sudo service docker stop

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

запуск докера службы

Эта команда используется для запуска процесса демона Docker.

Синтаксис

service docker start

Параметры

Никто

Возвращаемое значение

Сообщение, показывающее, что процесс Docker запущен.

пример

sudo service docker start

Вывод

Когда мы запускаем указанную выше команду, она даст следующий результат -

По умолчанию, когда вы запускаете контейнер, вы также будете использовать shell commandпри запуске контейнера, как показано ниже. Это то, что мы видели в предыдущих главах, когда работали с контейнерами.

На приведенном выше снимке экрана вы можете заметить, что мы выполнили следующую команду -

sudo docker run –it centos /bin/bash

Мы использовали эту команду для создания нового контейнера, а затем использовали команду Ctrl + P + Q для выхода из контейнера. Это гарантирует, что контейнер все еще существует даже после выхода из контейнера.

Мы можем проверить, что контейнер все еще существует, с помощью Docker psкоманда. Если бы нам пришлось выйти из контейнера напрямую, то сам контейнер был бы уничтожен.

Теперь есть более простой способ прикрепить к контейнерам и аккуратно выйти из них, не разрушая их. Один из способов добиться этого - использоватьnsenter команда.

Прежде чем мы запустим nsenter команду, вам необходимо сначала установить nsenterобраз. Это можно сделать с помощью следующей команды -

docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

Прежде чем использовать nsenter команде, нам нужно получить идентификатор процесса контейнера, потому что этого требует nsenterкоманда. Мы можем получить идентификатор процесса через Dockerinspect command и фильтруя его через Pid.

Как видно на скриншоте выше, мы сначала использовали docker psкоманда, чтобы увидеть запущенные контейнеры. Мы видим, что есть один запущенный контейнер с идентификатором ef42a4c5e663.

Затем мы используем Docker inspect чтобы проверить конфигурацию этого контейнера, а затем использовать grepкоманда, чтобы просто отфильтровать идентификатор процесса. И из выходных данных мы видим, что идентификатор процесса - 2978.

Теперь, когда у нас есть идентификатор процесса, мы можем продолжить и использовать nsenter команда для присоединения к контейнеру Docker.

нсентер

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

Синтаксис

nsenter –m –u –n –p –i –t команда containerID

Параметры

  • -u используется для упоминания Uts namespace

  • -m используется для упоминания mount namespace

  • -n используется для упоминания network namespace

  • -p используется для упоминания process namespace

  • -i s, чтобы контейнер работал в интерактивном режиме.

  • -t используется для подключения потоков ввода-вывода контейнера к ОС хоста.

  • containerID - Это идентификатор контейнера.

  • Command - Это команда для запуска в контейнере.

Возвращаемое значение

Никто

пример

sudo nsenter –m –u –n –p –i –t 2978 /bin/bash

Вывод

На выходе мы можем наблюдать следующие моменты -

  • Приглашение изменится на bash shell непосредственно, когда мы выдаем nsenter команда.

  • Затем мы выдаем exitкоманда. Теперь нормально, если вы не использовалиnsenterкоманда, контейнер будет уничтожен. Но вы заметили, что когда мы запускаемnsenter команда, контейнер все еще работает.

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

Если мы используем Docker imagesкоманда, мы можем видеть существующие изображения в нашей системе. На скриншоте выше мы видим, что есть два изображения:centos и nsenter.

Но Docker также дает вам возможность создавать свои собственные образы Docker, и это можно сделать с помощью Docker Files. Файл Docker - это простой текстовый файл с инструкциями по созданию изображений.

Следующие шаги объясняют, как вам следует создавать файл Docker.

Step 1 - Создайте файл с именем Docker File и отредактируйте его, используя vim. Обратите внимание, что имя файла должно быть «Dockerfile» с заглавной буквой «D».

Step 2 - Создайте файл Docker, используя следующие инструкции.

#This is a sample Image 
FROM ubuntu 
MAINTAINER [email protected] 

RUN apt-get update 
RUN apt-get install –y nginx 
CMD [“echo”,”Image created”]

В отношении вышеуказанного файла необходимо отметить следующие моменты:

  • Первая строка «# Это образец изображения» - это комментарий. Вы можете добавлять комментарии к файлу Docker с помощью# команда

  • Следующая строка должна начинаться с FROMключевое слово. Он сообщает докеру, из какого базового образа вы хотите создать свой образ. В нашем примере мы создаем изображение изubuntu образ.

  • Следующая команда - это человек, который будет поддерживать этот образ. Здесь вы указываетеMAINTAINER ключевое слово и просто укажите идентификатор электронной почты.

  • В RUNКоманда используется для выполнения инструкций по отношению к образу. В нашем случае мы сначала обновляем нашу систему Ubuntu, а затем устанавливаем сервер nginx на нашемubuntu образ.

  • Последняя команда используется для отображения сообщения пользователю.

Step 3- Сохраните файл. В следующей главе мы обсудим, как создать образ.

Мы создали наш файл Docker в предыдущей главе. Пришло время создать файл Docker. Файл Docker можно создать с помощью следующей команды -

docker build

Давайте узнаем больше об этой команде.

сборка докеров

Этот метод позволяет пользователям создавать свои собственные образы Docker.

Синтаксис

docker build  -t ImageName:TagName dir

Параметры

  • -t - это упоминание тега к изображению

  • ImageName - Это имя, которое вы хотите дать своему изображению.

  • TagName - Это тег, который вы хотите присвоить своему изображению.

  • Dir - Каталог, в котором находится файл Docker.

Возвращаемое значение

Никто

пример

sudo docker build –t myimage:0.1.

Вот, myimage это имя, которое мы даем образу и 0.1 это номер тега, который мы даем нашему изображению.

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

Вывод

Из выходных данных вы сначала увидите, что образ Ubuntu будет загружен из Docker Hub, поскольку на компьютере нет образа, доступного локально.

Наконец, когда сборка будет завершена, все необходимые команды будут выполнены на образе.

Затем вы увидите успешно созданное сообщение и идентификатор нового изображения. Когда вы запускаете Dockerimages command, тогда вы сможете увидеть свое новое изображение.

Теперь вы можете создавать контейнеры из вашего нового образа.

Публичные репозитории могут использоваться для размещения образов Docker, которые могут использовать все остальные. Примером могут служить образы, доступные в Docker Hub. Большинство образов, таких как Centos, Ubuntu и Jenkins, общедоступны для всех. Мы также можем сделать наши изображения доступными, опубликовав их в общедоступном репозитории на Docker Hub.

В нашем примере мы будем использовать myimageрепозиторий, созданный в главе «Создание файлов Docker», и загрузите этот образ в Docker Hub. Давайте сначала рассмотрим образы на нашем хосте Docker, чтобы увидеть, что мы можем отправить в реестр Docker.

Здесь у нас есть myimage:0.1образ, который был создан в рамках главы «Создание файлов Docker». Давайте воспользуемся этим для загрузки в публичный репозиторий Docker.

Следующие шаги объясняют, как вы можете загрузить изображение в общедоступный репозиторий.

Step 1- Войдите в Docker Hub и создайте свой репозиторий. Это репозиторий, в котором будет храниться ваше изображение. Идти кhttps://hub.docker.com/ и войдите со своими учетными данными.

Step 2 - Нажмите кнопку «Создать репозиторий» на приведенном выше экране и создайте репозиторий с именем demorep. Убедитесь, что репозиторий открыт для всех.

После создания репозитория обратите внимание на pull команда, которая прикреплена к репозиторию.

В pull команда, которая будет использоваться в нашем репозитории, выглядит следующим образом:

docker pull demousr/demorep

Step 3- Теперь вернитесь к Docker Host. Здесь нам нужно пометить нашиmyimageв новый репозиторий, созданный в Docker Hub. Мы можем сделать это через Dockertag command.

Мы узнаем об этом больше tag command далее в этой главе.

Step 4- Выполните команду входа в Docker, чтобы войти в репозиторий Docker Hub из командной строки. Команда входа в Docker запросит у вас имя пользователя и пароль для репозитория Docker Hub.

Step 5- После того, как образ был помечен тегами, пришло время отправить образ в репозиторий Docker Hub. Мы можем сделать это через Dockerpushкоманда. Мы узнаем больше об этой команде позже в этой главе.

тег докера

Этот метод позволяет пометить изображение в соответствующем репозитории.

Синтаксис

docker tag imageID Repositoryname

Параметры

  • imageID - Это ImageID, который нужно привязать к репозиторию.

  • Repositoryname - Это имя репозитория, к которому должен быть привязан ImageID.

Возвращаемое значение

Никто

пример

sudo docker tag ab0c1d3744dd demousr/demorep:1.0

Вывод

Ниже приведен пример вывода вышеприведенного примера.

докер толчок

Этот метод позволяет отправлять изображения в Docker Hub.

Синтаксис

docker push Repositoryname

Параметры

  • Repositoryname - Это имя репозитория, которое нужно отправить в Docker Hub.

Возвращаемое значение

Длинный идентификатор репозитория, отправленный в Docker Hub.

пример

sudo docker push demousr/demorep:1.0

Вывод

Если вы вернетесь на страницу Docker Hub и перейдете в свой репозиторий, вы увидите имя тега в репозитории.

Теперь попробуем вытащить репозиторий, который мы загрузили, на наш хост Docker. Давайте сначала удалим изображения,myimage:0.1 и demousr/demorep:1.0, с локального хоста Docker. Воспользуемся Докеромpull command чтобы вытащить репозиторий из Docker Hub.

На скриншоте выше видно, что Docker pull команда взяла наш новый репозиторий из Docker Hub и разместила его на нашей машине.

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

В нашем примере мы собираемся загрузить контейнер Jenkins из Docker Hub. Затем мы собираемся сопоставить номер порта Jenkins с номером порта на хосте Docker.

Step 1 - Во-первых, вам нужно выполнить простую регистрацию в Docker Hub.

Step 2 - После регистрации вы войдете в Docker Hub.

Step 3 - Затем давайте просмотрим и найдем изображение Дженкинса.

Step 4 - Если вы прокрутите ту же страницу вниз, вы увидите Docker pullкоманда. Это будет использоваться для загрузки образа Jenkins на локальный сервер Ubuntu.

Step 5 - Теперь перейдите на сервер Ubuntu и выполните команду -

sudo docker pull jenkins

Step 6 - Чтобы понять, какие порты доступны в контейнере, вы должны использовать Docker. inspect command осмотреть изображение.

Давайте теперь узнаем об этом больше inspect команда.

докер осмотреть

Этот метод позволяет возвращать низкоуровневую информацию о контейнере или изображении.

Синтаксис

docker inspect Container/Image

Параметры

  • Container/Image - Контейнер или изображение для проверки

Возвращаемое значение

Низкоуровневая информация изображения или контейнера в формате JSON.

пример

sudo docker inspect jenkins

Вывод

Выход inspectкоманда дает вывод JSON. Если мы посмотрим на вывод, мы увидим, что есть раздел «ExposedPorts» и увидим, что упоминаются два порта. Один из нихdata port 8080, а другой - control port из 50000.

Чтобы запустить Jenkins и сопоставить порты, вам нужно изменить Docker runи добавьте параметр 'p', который указывает сопоставление портов. Итак, вам нужно выполнить следующую команду -

sudo docker run -p 8080:8080 -p 50000:50000 jenkins

Левая часть сопоставления номеров портов - это порт хоста Docker для сопоставления, а правая часть - это номер порта контейнера Docker.

Когда вы откроете браузер и перейдете к хосту Docker через порт 8080, вы увидите, что Jenkins запущен и работает.

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

Step 1 - Используйте Docker runкоманда для загрузки частного реестра. Это можно сделать с помощью следующей команды.

sudo docker run –d –p 5000:5000 –-name registry registry:2

О приведенной выше команде необходимо отметить следующие моменты:

  • Registry - это контейнер, управляемый Docker, который можно использовать для размещения частных репозиториев.

  • Номер порта, предоставляемый контейнером, - 5000. Следовательно, с –p command, мы сопоставляем тот же номер порта с номером порта 5000 на нашем локальном хосте.

  • Мы просто помечаем контейнер реестра как «2», чтобы различать его на хосте Docker.

  • В –dопция используется для запуска контейнера в автономном режиме. Это сделано для того, чтобы контейнер мог работать в фоновом режиме

Step 2 - Давай сделаем docker ps чтобы убедиться, что контейнер реестра действительно запущен.

Теперь мы подтвердили, что контейнер реестра действительно работает.

Step 3- Теперь давайте отметим одно из наших существующих изображений, чтобы мы могли отправить его в наш локальный репозиторий. В нашем примере, поскольку у нас естьcentos изображение, доступное локально, мы собираемся пометить его в нашем частном репозитории и добавить имя тега centos.

sudo docker tag 67591570dd29 localhost:5000/centos

О приведенной выше команде необходимо отметить следующие моменты:

  • 67591570dd29 относится к идентификатору изображения для centos образ.

  • localhost:5000 это местонахождение нашего частного репозитория.

  • Мы помечаем имя репозитория как centos в нашем частном репозитории.

Step 4 - Теперь воспользуемся Докером push команда для отправки репозитория в наш частный репозиторий.

sudo docker push localhost:5000/centos

Здесь мы продвигаем centos изображение в частный репозиторий, размещенный на localhost:5000.

Step 5 - Теперь давайте удалим локальные изображения, которые у нас есть для centos используя docker rmiкоманды. Затем мы можем загрузить требуемыйcentos изображение из нашего личного репозитория.

sudo docker rmi centos:latest 
sudo docker rmi 67591570dd29

Step 6 - Теперь, когда у нас нет centos образы на нашем локальном компьютере, теперь мы можем использовать следующий Docker pull команда тянуть centos изображение из нашего личного репозитория.

sudo docker pull localhost:5000/centos

Здесь мы тянем centos изображение в частный репозиторий, размещенный на localhost:5000.

Если вы теперь видите изображения в своей системе, вы увидите centos изображение тоже.

Мы уже узнали, как использовать Docker File для создания собственных пользовательских образов. Теперь давайте посмотрим, как мы можем создать образ веб-сервера, который можно использовать для создания контейнеров.

В нашем примере мы собираемся использовать веб-сервер Apache в Ubuntu для создания нашего образа. Чтобы создать файл Docker для нашего веб-сервера, выполните следующие действия.

Step 1- Первый шаг - создать наш файл Docker. Давайте использоватьvim и создайте файл Docker со следующей информацией.

FROM ubuntu 
RUN apt-get update 
RUN apt-get install –y apache2 
RUN apt-get install –y apache2-utils 
RUN apt-get clean 
EXPOSE 80 CMD [“apache2ctl”, “-D”, “FOREGROUND”]

В отношении приведенных выше утверждений необходимо отметить следующие моменты:

  • Сначала мы создаем наш образ из базового образа Ubuntu.

  • Затем мы собираемся использовать команду RUN для обновления всех пакетов в системе Ubuntu.

  • Затем мы используем команду RUN для установки apache2 в наш образ.

  • Затем мы используем команду RUN для установки необходимых пакетов служебной программы apache2 в наш образ.

  • Затем мы используем команду RUN для очистки всех ненужных файлов из системы.

  • Команда EXPOSE используется для открытия порта 80 Apache в контейнере хосту Docker.

  • Наконец, команда CMD используется для запуска apache2 в фоновом режиме.

Теперь, когда данные файла введены, просто сохраните файл.

Step 2 - Запускаем Докер buildкоманда для создания файла Docker. Это можно сделать с помощью следующей команды -

sudo docker build –t=”mywebserver” .

Мы помечаем наше изображение как mywebserver. После создания образа вы получите сообщение об успешном создании файла.

Step 3- Теперь, когда файл веб-сервера создан, пришло время создать контейнер из изображения. Мы можем сделать это с помощью Dockerrun команда.

sudo docker run –d –p 80:80 mywebserver

О приведенной выше команде необходимо отметить следующие моменты:

  • Номер порта, отображаемый контейнером, - 80. Следовательно, с –p , мы сопоставляем тот же номер порта с номером порта 80 на нашем локальном хосте.

  • В –dопция используется для запуска контейнера в автономном режиме. Это сделано для того, чтобы контейнер мог работать в фоновом режиме.

Если вы перейдете на порт 80 хоста Docker в своем веб-браузере, вы увидите, что Apache запущен и работает.

В Docker есть множество команд инструкций. Это команды, которые помещаются в файл Docker. Давайте посмотрим на те, которые есть в наличии.

Инструкция CMD

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

Синтаксис

CMD command param1

Параметры

  • command - Это команда, запускаемая при запуске контейнера.

  • param1 - Это параметр, введенный в команду.

Возвращаемое значение

Команда будет выполнена соответственно.

пример

В нашем примере мы введем простой Hello World echo в нашем файле Docker, создайте образ и запустите из него контейнер.

Step 1 - Создайте файл Docker с помощью следующих команд -

FROM ubuntu 
MAINTAINER [email protected] 
CMD [“echo” , “hello world”]

Здесь CMD просто используется для печати hello world.

Step 2 - Создайте образ с помощью Docker build команда.

Step 3 - Запускаем контейнер из образа.

ТОЧКА ВХОДА

Эту команду также можно использовать для выполнения команд во время выполнения контейнера. Но мы можем быть более гибкими с помощью команды ENTRYPOINT.

Синтаксис

ENTRYPOINT command param1

Параметры

  • command - Это команда, запускаемая при запуске контейнера.

  • param1 - Это параметр, введенный в команду.

Возвращаемое значение

Команда будет выполнена соответственно.

пример

Давайте рассмотрим пример, чтобы лучше понять ENTRYPOINT. В нашем примере мы введем простойecho в нашем файле Docker, создайте образ и запустите из него контейнер.

Step 1 - Создайте файл Docker с помощью следующих команд -

FROM ubuntu 
MAINTAINER [email protected] 
ENTRYPOINT [“echo”]

Step 2 - Создайте образ с помощью Docker build команда.

Step 3 - Запускаем контейнер из образа.

ENV

Эта команда используется для установки переменных среды в контейнере.

Синтаксис

ENV key value

Параметры

  • Key - Это ключ для переменной окружения.

  • value - Это значение переменной окружения.

Возвращаемое значение

Команда будет выполнена соответственно.

пример

В нашем примере мы введем простой echo в нашем файле Docker, создайте образ и запустите из него контейнер.

Step 1 - Создайте файл Docker с помощью следующих команд -

FROM ubuntu 
MAINTAINER [email protected] 
ENV var1=Tutorial var2=point

Step 2 - Создайте образ с помощью Docker build команда.

Step 3 - Запускаем контейнер из образа.

Step 4 - Наконец, выполните env команда, чтобы увидеть переменные среды.

WORKDIR

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

Синтаксис

WORKDIR dirname

Параметры

  • dirname- Новый рабочий каталог. Если каталог не существует, он будет добавлен.

Возвращаемое значение

Команда будет выполнена соответственно.

пример

В нашем примере мы введем простой echo в нашем файле Docker, создайте образ и запустите из него контейнер.

Step 1 - Создайте файл Docker с помощью следующих команд -

FROM ubuntu 
MAINTAINER [email protected] 
WORKDIR /newtemp 
CMD pwd

Step 2 - Создайте образ с помощью Docker build команда.

Step 3 - Запускаем контейнер из образа.

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

Step 1 - Загрузите образ Jenkins, если он еще не присутствует, используя Jenkins. pull команда.

Step 2 - Как только изображение станет доступным, запустите контейнер, но на этот раз вы можете указать имя контейнера, используя –-nameвариант. Это будет нашsource container.

Step 3- Затем пора запустить целевой контейнер, но на этот раз мы свяжем его с нашим исходным контейнером. Для нашего целевого контейнера мы будем использовать стандартный образ Ubuntu.

Когда вы делаете docker ps, вы увидите, что оба контейнера работают.

Step 4 - Теперь прикрепите к приемному контейнеру.

Затем запустите envкоманда. Вы заметите новые переменные для связи с исходным контейнером.

Драйверы хранения

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

Технологии Драйвер хранилища
OverlayFS оверлей или оверлей2
AUFS aufs
Btrfs brtfs
Диспетчер устройств Диспетчер устройств
VFS vfs
ZFS zfs

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

AUFS

  • Это стабильный драйвер; может использоваться для готовых к производству приложений.

  • Он хорошо использует память и хорош для обеспечения бесперебойной работы Docker для контейнеров.

  • С этим драйвером связана высокая активность записи, которую следует учитывать.

  • Это хорошо для систем, которые относятся к платформе как к сервису.

Devicemapper

  • Это стабильный драйвер; обеспечивает бесперебойную работу с Docker.

  • Этот драйвер подходит для тестирования приложений в лаборатории.

  • Этот драйвер соответствует основным функциям ядра Linux.

Btrfs

  • Этот драйвер соответствует основным функциям ядра Linux.

  • С этим драйвером связана высокая активность записи, которую следует учитывать.

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

Ovelay

  • Это стабильный драйвер, который соответствует основным функциям ядра Linux.

  • У него хорошее использование памяти.

  • Этот драйвер подходит для тестирования приложений в лаборатории.

ZFS

  • Это стабильный драйвер, который подходит для тестирования приложений в лаборатории.

  • Это хорошо для систем, которые работают по типу «платформа как услуга».

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

Синтаксис

docker info

Параметры

Никто

Возвращаемое значение

Команда предоставит всю относительную информацию о компоненте Docker, установленном на Docker Host.

пример

sudo docker info

Вывод

Следующий вывод показывает, что основным используемым драйвером является aufs драйвер и что корневой каталог хранится в /var/lib/docker/aufs.

Объемы данных

В Docker у вас есть отдельный том, который можно использовать в разных контейнерах. Они известны какdata volumes. Некоторые из особенностей объема данных -

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

Давайте посмотрим на наш контейнер Jenkins. Давай сделаемdocker inspectчтобы увидеть детали этого изображения. Мы можем выполнить следующую команду, чтобы записать выводdocker inspect в текстовый файл, а затем просмотрите файл соответствующим образом.

sudo docker inspect Jenkins > tmp.txt

Когда вы просматриваете текстовый файл с помощью more command, вы увидите запись как JENKINS_HOME=/var/Jenkins_home.

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

Теперь предположим, что вы хотите сопоставить том в контейнере с локальным томом, тогда вам нужно указать опцию –v при запуске контейнера. Пример показан ниже -

sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

Параметр –v используется для сопоставления тома в контейнере, который /var/jenkins_home в место на нашем хосте Docker, которое /home/demo.

Теперь, если вы перейдете к /home/demo местоположение на вашем хосте Docker после запуска вашего контейнера, вы увидите все файлы контейнера, присутствующие там.

Смена драйвера хранилища для контейнера

Если вы хотите перейти на драйвер хранилища, используемый для контейнера, вы можете сделать это при запуске контейнера. Это можно сделать с помощью–volume-driver параметр при использовании docker runкоманда. Пример приведен ниже -

sudo docker run –d --volume-driver=flocker 
   –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

В –volume-driver опция используется для указания другого драйвера хранилища для контейнера.

Чтобы убедиться, что драйвер был изменен, сначала воспользуемся docker psкоманда, чтобы увидеть запущенные контейнеры и получить идентификатор контейнера. Итак, сначала выполните следующую команду -

sudo docker ps

Затем выпустите docker inspect против контейнера и поместите результат в текстовый файл с помощью команды.

sudo docker inspect 9bffb1bfebee > temp.txt

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

Создание тома

Том можно создать заранее, используя dockerкоманда. Давайте узнаем больше об этой команде.

Синтаксис

docker volume create –-name=volumename –-opt options

Параметры

  • name - Это имя тома, который необходимо создать.

  • opt - Это параметры, которые вы можете предоставить при создании тома.

Возвращаемое значение

Команда выведет имя созданного тома.

пример

sudo docker volume create –-name = demo –opt o = size = 100m

В приведенной выше команде мы создаем том размером 100 МБ с именем demo.

Вывод

Результат выполнения вышеуказанной команды показан ниже -

Перечисление всех томов

Вы также можете перечислить все docker volumes на docker host. Более подробная информация об этой команде приведена ниже -

Синтаксис

docker volume ls

Параметры

Никто

Возвращаемое значение

Команда выведет все тома на docker host.

пример

sudo docker volume ls

Вывод

Результат выполнения вышеуказанной команды показан ниже -

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

Это мост между хостом Docker и хостом Linux. Теперь давайте посмотрим на некоторые команды, связанные с сетью в Docker.

Список всех сетей Docker

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

Синтаксис

docker network ls

Параметры

Никто

Возвращаемое значение

Команда выведет все сети на Docker Host.

пример

sudo docker network ls

Вывод

Результат выполнения вышеуказанной команды показан ниже.

Проверка сети Docker

Если вы хотите увидеть более подробную информацию о сети, связанной с Docker, вы можете использовать Docker network inspect команда.

Синтаксис

docker network inspect networkname

Параметры

  • networkname - Это имя сети, которую нужно проверить.

Возвращаемое значение

Команда выведет все подробности о сети.

пример

sudo docker network inspect bridge

Вывод

Результат выполнения вышеуказанной команды показан ниже -

Теперь давайте запустим контейнер и посмотрим, что произойдет, когда мы снова проверим сеть. Давайте развернем контейнер Ubuntu с помощью следующей команды -

sudo docker run –it ubuntu:latest /bin/bash

Теперь, если мы проверим наше сетевое имя с помощью следующей команды, вы увидите, что контейнер подключен к мосту.

sudo docker network inspect bridge

Создание собственной новой сети

Перед запуском контейнеров можно создать сеть в Docker. Это можно сделать с помощью следующей команды -

Синтаксис

docker network create –-driver drivername name

Параметры

  • drivername - Это имя, используемое для сетевого драйвера.

  • name - Это имя, данное сети.

Возвращаемое значение

Команда выведет длинный идентификатор для новой сети.

пример

sudo docker network create –-driver bridge new_nw

Вывод

Результат выполнения вышеуказанной команды показан ниже -

Теперь вы можете подключить новую сеть при запуске контейнера. Итак, давайте развернем контейнер Ubuntu с помощью следующей команды -

sudo docker run –it –network=new_nw ubuntu:latest /bin/bash

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

sudo docker network inspect new_nw

Node.js - это фреймворк JavaScript, который используется для разработки серверных приложений. Это среда с открытым исходным кодом, разработанная для работы в различных операционных системах. Поскольку Node.js - популярный фреймворк для разработки, Docker также обеспечил поддержку приложений Node.js.

Теперь мы увидим различные шаги для запуска и запуска контейнера Docker для Node.js.

Step 1- Первый шаг - вытащить образ из Docker Hub. Когда вы войдете в Docker Hub, вы сможете найти и увидеть изображение для Node.js, как показано ниже. Просто введите узел в поле поиска и щелкните ссылку узла (официальную), которая появляется в результатах поиска.

Step 2 - Вы увидите, что Docker pull команду для узла в деталях репозитория в Docker Hub.

Step 3 - На хосте Docker используйте Docker pull как показано выше, чтобы загрузить последний образ узла из Docker Hub.

Однажды pull завершено, мы можем перейти к следующему шагу.

Step 4 - На хосте Docker воспользуемся vimEditor и создайте один пример файла Node.js. В этом файле мы добавим простую команду для отображения «HelloWorld» в командной строке.

В файл Node.js давайте добавим следующий оператор -

Console.log(‘Hello World’);

Это выведет фразу «Hello World», когда мы пропустим ее через Node.js.

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

Step 5 - Чтобы запустить наш скрипт Node.js с использованием контейнера Node Docker, нам нужно выполнить следующий оператор:

sudo docker run –it –rm –name = HelloWorld –v “$PWD”:/usr/src/app 
   –w /usr/src/app node node HelloWorld.js

О приведенной выше команде необходимо отметить следующие моменты:

  • В –rm опция используется для удаления контейнера после его запуска.

  • Мы даем контейнеру имя «HelloWorld».

  • Мы упоминаем, чтобы отобразить объем в контейнере, который /usr/src/appв наш текущий рабочий каталог. Это сделано для того, чтобы контейнер узла забрал наш скрипт HelloWorld.js, который находится в нашем рабочем каталоге на хосте Docker.

  • В –w опция используется для указания рабочего каталога, используемого Node.js.

  • Первый параметр узла используется для указания запуска образа узла.

  • Вторая опция узла используется для упоминания для запуска команды узла в контейнере узла.

  • И напоследок упомянем название нашего скрипта.

Тогда мы получим следующий результат. Из выходных данных мы ясно видим, что контейнер Node работал как контейнер и выполнил скрипт HelloWorld.js.

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

Теперь мы увидим различные шаги для запуска и запуска контейнера Docker для MongoDB.

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

Step 2 - Вы увидите, что Docker pull для Mongo в деталях репозитория в Docker Hub.

Step 3 - На хосте Docker используйте Docker pull как показано выше, чтобы загрузить последний образ Mongo из Docker Hub.

Step 4- Теперь, когда у нас есть образ для Mongo, давайте сначала запустим контейнер MongoDB, который будет нашим экземпляром для MongoDB. Для этого мы выполним следующую команду -

sudo docker run -it -d mongo

Следующие моменты можно отметить о приведенной выше команде -

  • В –it опция используется для запуска контейнера в интерактивном режиме.

  • В –d опция используется для запуска контейнера как процесса-демона.

  • И, наконец, мы создаем контейнер из образа Mongo.

Затем вы можете выдать docker ps команда, чтобы увидеть запущенные контейнеры -

Обратите внимание на следующие моменты -

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

  • Затем также обратите внимание на номер порта, на котором он работает. Он прослушивает TCP-порт 27017.

Step 5- Теперь давайте развернем еще один контейнер, который будет действовать как наш клиент, который будет использоваться для подключения к базе данных MongoDB. Давайте для этого выполним следующую команду -

sudo docker run –it –link=tender_poitras:mongo mongo /bin/bash

Следующие моменты можно отметить о приведенной выше команде -

  • В –it опция используется для запуска контейнера в интерактивном режиме.

  • Теперь мы связываем наш новый контейнер с уже запущенным контейнером сервера MongoDB. Здесь нужно указать название уже запущенного контейнера.

  • Затем мы указываем, что хотим запустить контейнер Mongo как наш клиент, а затем запустить bin/bash оболочка в нашем новом контейнере.

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

Step 6 - Запустите env в новом контейнере, чтобы просмотреть подробную информацию о том, как подключиться к контейнеру сервера MongoDB.

Step 6- Теперь пора подключиться к серверу MongoDB из клиентского контейнера. Мы можем сделать это с помощью следующей команды -

mongo 172.17.0.2:27017

В отношении вышеуказанной команды необходимо отметить следующие моменты.

  • В mongo команда - это клиент mongo команда, которая используется для подключения к базе данных MongoDB.

  • IP и номер порта - это то, что вы получаете, когда используете env команда.

После того, как вы запустите команду, вы будете подключены к базе данных MongoDB.

Затем вы можете запустить любую команду MongoDB в командной строке. В нашем примере мы выполняем следующую команду -

use demo

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

Теперь вы успешно создали клиентский и серверный контейнер MongoDB.

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

Теперь мы увидим различные шаги по получению контейнера Docker для nginx запущен и работает.

Step 1- Первый шаг - вытащить образ из Docker Hub. Когда вы войдете в Docker Hub, вы сможете найти и увидеть изображение дляnginxкак показано ниже. Просто введите nginx в поле поиска и нажмите наnginx (официальная) ссылка, которая появляется в результатах поиска.

Step 2 - Вы увидите, что Docker pull команда для nginx в деталях репозитория в Docker Hub.

Step 3 - На хосте Docker используйте Docker pull как показано выше, чтобы загрузить последний образ nginx из Docker Hub.

Step 4 - Теперь запустим nginx контейнер с помощью следующей команды.

sudo docker run –p 8080:80 –d nginx

Выставляем порт на nginx сервер, который является портом 80 на порт 8080 на хосте Docker.

После запуска команды вы получите следующий вывод, если перейдете по URL-адресу http://dockerhost:8080. Это показывает, чтоnginx контейнер запущен и работает.

Step 5 - Давайте посмотрим на другой пример, где мы можем разместить простую веб-страницу в нашем ngnixконтейнер. В нашем примере мы создадим простойHelloWorld.html файл и разместить его в нашем nginx контейнер.

Давайте сначала создадим HTML-файл с именем HelloWorld.html

Давайте добавим простую строку Hello World в HTML-файл.

Затем запустим следующую команду Docker.

sudo docker run –p 8080:80 –v 
   “$PWD”:/usr/share/nginx/html:ro –d nginx

О приведенной выше команде необходимо отметить следующие моменты:

  • Выставляем порт на nginx сервер, который является портом 80 на порт 8080 на хосте Docker.

  • Затем мы прикрепляем объем к контейнеру, который /usr/share/nginx/htmlв наш текущий рабочий каталог. Здесь хранится наш файл HelloWorld.html.

Теперь, если мы перейдем к URL-адресу http://dockerhost:8080/HelloWorld.html мы получим следующий результат, как и ожидалось -

Во вводных главах мы видели установку Docker toolbox в Windows. Набор инструментов Docker разработан таким образом, чтобы контейнеры Docker можно было запускать в Windows и MacOS. Сайт для панели инструментов в Windows:https://docs.docker.com/docker-for-windows/

Для Windows вам потребуется Windows 10 или Windows Server 2016 с включенным Hyper-V.

Набор инструментов состоит из следующих компонентов -

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

  • Docker Machine - для запуска машинных команд Docker.

  • Docker Compose для запуска команд Docker compose.

  • Kinematic - Это графический интерфейс Docker, созданный для Windows и Mac OS.

  • Oracle virtualbox

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

Запуск в Powershell

С помощью панели инструментов Docker в Windows 10 теперь можно запускать команды Docker вне powershell. Если вы откроете PowerShell в Windows и наберете команду версии Docker, вы получите все необходимые сведения об установленной версии Docker.

Получение изображений и запуск контейнеров

Теперь вы также можете извлекать изображения из Docker Hub и запускать контейнеры в PowerShell, как в Linux. Следующий пример вкратце покажет загрузку образа Ubuntu и запуск контейнера из образа.

Первый шаг - использовать Docker pull команда для извлечения образа Ubuntu из Docker Hub.

Следующим шагом является запуск образа Docker, используя следующие run команда -

docker run –it ubuntu /bin/bash

Вы заметите, что команда такая же, как и в Linux.

Kitematic

Это GUI-эквивалент Docker в Windows. Чтобы открыть этот графический интерфейс, перейдите на панель задач и щелкните значок Docker правой кнопкой мыши и выберите «Открыть Kitematic».

Вам будет предложено загрузить графический интерфейс Kitematic. После загрузки просто разархивируйте содержимое. Будет файл с именемKitematic.exe. Дважды щелкните этот exe-файл, чтобы открыть графический интерфейс.

Затем вам будет предложено войти в Docker Hub, войти через графический интерфейс. Просто введите необходимые имя пользователя и пароль, а затем нажмите кнопку «Войти».

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

Справа вы найдете все образы, доступные в Docker Hub.

Давайте рассмотрим пример, чтобы понять, как загрузить образ узла из Docker Hub с помощью Kitematic.

Step 1 - Введите ключевое слово узла в критерии поиска.

Step 2 - Щелкните значок createна официальном образе узла. После этого вы увидите загружаемое изображение.

Как только образ будет загружен, он запустит контейнер Node.

Step 3 - Если вы пойдете в settings На вкладке можно перейти к дополнительным параметрам настроек, как показано ниже.

  • General settings - На этой вкладке вы можете назвать контейнер, изменить настройки пути и удалить контейнер.

  • Ports- Здесь вы можете увидеть различные сопоставления портов. Если хотите, вы можете создать свои собственные сопоставления портов.

  • Volumes - Здесь вы можете увидеть различные сопоставления томов.

  • Advanced - Содержит расширенные настройки контейнера.

ASP.Net - это стандартная среда веб-разработки, предоставляемая Microsoft для разработки серверных приложений. Поскольку ASP.Net разрабатывалась достаточно давно, Docker обеспечил поддержку ASP.Net.

В этой главе мы увидим различные шаги по настройке и запуску контейнера Docker для ASP.Net.

Предпосылки

Для запуска ASP.Net сначала необходимо выполнить следующие шаги.

Step 1 - Поскольку это может работать только в системах Windows, вам сначала необходимо убедиться, что у вас установлена ​​Windows 10 или Windows Server 2016.

Step 2- Затем убедитесь, что Hyper-V и контейнеры установлены в системе Windows. Чтобы установить Hyper – V и контейнеры, вы можете перейти к включению или выключению компонентов Windows. Затем убедитесь, что установлен флажок Hyper-V и Контейнеры, и нажмите кнопку ОК.

После этой операции системе может потребоваться перезагрузка.

Step 3 - Затем вам нужно использовать следующую команду Powershell для установки 1.13.0rc4версия Docker. Следующая команда загрузит это и сохранит во временном месте.

Invoke-WebRequest "https://test.docker.com/builds/Windows/x86_64/docker-1.13.0-
   rc4.zip" -OutFile "$env:TEMP\docker-1.13.0-rc4.zip" –UseBasicParsing

Step 4 - Далее вам нужно расширить архив, используя следующие powershell команда.

Expand-Archive -Path "$env:TEMP\docker-1.13.0-rc4.zip" -DestinationPath $env:ProgramFiles

Step 5 - Затем вам нужно добавить файлы Docker в переменную среды, используя следующие powershell команда.

$env:path += ";$env:ProgramFiles\Docker"

Step 6 - Затем вам необходимо зарегистрировать службу Docker Daemon Service, используя следующие powershell команда.

dockerd --register-service

Step 7 - Наконец, вы можете начать docker daemon используя следующую команду.

Start-Service Docker

Использовать docker version командовать в powershell чтобы убедиться, что docker daemon работает

Установка контейнера ASP.Net

Посмотрим, как установить контейнер ASP.Net.

Step 1- Первый шаг - вытащить образ из Docker Hub. Когда вы войдете в Docker Hub, вы сможете найти и увидеть изображение дляMicrosoft/aspnetкак показано ниже. Просто введитеasp в поле поиска и щелкните ссылку Microsoft / aspnet, которая появляется в результатах поиска.

Step 2 - Вы увидите, что Docker pull для ASP.Net в деталях репозитория в Docker Hub.

Step 3 - Перейдите на Docker Host и запустите Docker. pullкоманда для образа microsoft / aspnet. Обратите внимание, что образ довольно большой, где-то около 4,2 ГБ.

Step 4 - Теперь перейдите в следующую локацию https://github.com/Microsoft/aspnet-docker и скачайте весь репозиторий Git.

Step 5 - Создайте папку с названием Appна вашем диске C. Затем скопируйте содержимое из4.6.2/sampleпапку на диск C. Перейдите в файл Docker в каталог с образцом и выполните следующую команду -

docker build –t aspnet-site-new –build-arg site_root=/

О приведенной выше команде необходимо отметить следующие моменты:

  • Он создает новый образ под названием aspnet-site-new из файла Docker.
  • Корневой путь установлен в папку localpath.

Step 6- Теперь пора запустить контейнер. Это можно сделать с помощью следующей команды -

docker run –d –p 8000:80 –name my-running-site-new aspnet-site-new

Step 7- Теперь у вас будет запущен IIS в контейнере Docker. Чтобы узнать IP-адрес контейнера Docker, вы можете запустить Dockerinspect как показано ниже.

Docker Cloud - это сервис, предоставляемый Docker, в котором вы можете выполнять следующие операции:

  • Nodes - Вы можете подключить Docker Cloud к своим существующим облачным провайдерам, таким как Azure и AWS, для развертывания контейнеров в этих средах.

  • Cloud Repository - Предоставляет место, где вы можете хранить свои собственные репозитории.

  • Continuous Integration - Связаться с Github и построить конвейер непрерывной интеграции.

  • Application Deployment - Развертывайте и масштабируйте инфраструктуру и контейнеры.

  • Continuous Deployment - Может автоматизировать развертывание.

Начиная

Вы можете перейти по следующей ссылке, чтобы начать работу с Docker Cloud - https://cloud.docker.com/

После входа в систему вам будет предоставлен следующий базовый интерфейс -

Подключение к облачному провайдеру

Первый шаг - подключиться к существующему облачному провайдеру. Следующие шаги покажут вам, как подключиться к провайдеру Amazon Cloud.

Step 1- Первый шаг - убедиться, что у вас есть правильные ключи AWS. Это можно взять изawsприставка. Войдите в свойaws аккаунт по следующей ссылке - https://aws.amazon.com/console/

Step 2- После входа в систему перейдите в раздел «Учетные данные безопасности». Запишите ключи доступа, которые будут использоваться из Docker Hub.

Step 3 - Далее вам нужно создать политику в awsчто позволит Docker просматривать экземпляры EC2. Перейдите в раздел профилей вaws. Щелкните значокCreate Policy кнопка.

Step 4 - Нажмите «Создать свою собственную политику» и укажите имя политики как dockercloudpolicy и определение политики, как показано ниже.

{ 
   "Version": "2012-10-17", 
   "Statement": [ { 
      "Action": [ 
         "ec2:*", 
         "iam:ListInstanceProfiles" 
      ], 
      "Effect": "Allow", 
      "Resource": "*" 
   } ] 
}

Затем нажмите кнопку Create Policy кнопка

Step 5 - Далее вам нужно создать roleкоторый будет использоваться Docker для раскрутки узлов на AWS. Для этого перейдите вRoles раздел в AWS и щелкните Create New Role вариант.

Step 6 - Дайте название роли как dockercloud-role.

Step 7 - На следующем экране перейдите к «Роль для доступа между аккаунтами» и выберите «Предоставить доступ между вашей учетной записью и сторонней учетной записью AWS».

Step 8 - На следующем экране введите следующие данные -

  • В поле Account ID введите ID службы Docker Cloud: 689684103426.
  • В поле Внешний идентификатор введите свое имя пользователя Docker Cloud.

Step 9 - Затем нажмите Next Step и на следующем экране прикрепите политику, созданную на предыдущем шаге.

Step 10 - Наконец, на последнем экране при создании роли обязательно скопируйте arn роль, которая создается.

arn:aws:iam::085363624145:role/dockercloud-role

Step 11 - Теперь вернитесь к Docker Cloud, Выбрать Cloud Providers, и щелкните plug symbol рядом с Amazon Web Services.

Введите arn роль и щелкните Save кнопка.

После сохранения интеграция с AWS будет завершена.

Настройка узлов

После завершения интеграции с AWS следующим шагом будет настройка узла. Перейдите в раздел «Узлы» в Docker Cloud. Обратите внимание, что при настройке узлов сначала будет автоматически настроен кластер узлов.

Step 1 - Перейдите в раздел «Узлы» в Docker Cloud.

Step 2 - Затем вы можете указать детали узлов, которые будут настроены в AWS.

Затем вы можете щелкнуть кластер Launch Node, который будет отображаться в нижней части экрана. Как только узел будет развернут, вы получите уведомление на экране кластера узлов.

Развертывание службы

Следующим шагом после развертывания узла является развертывание службы. Для этого нам необходимо выполнить следующие действия.

Step 1 - Зайдите в Services Sectionв Docker Cloud. Щелкните значокCreate кнопка

Step 2- Выберите услугу, которая требуется. В нашем случае выберемmongo.

Step 3 - На следующем экране выберите Create & Deployвариант. Начнется развертываниеMongo контейнер на вашем кластере узлов.

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

В Docker есть механизмы ведения журнала, которые можно использовать для отладки проблем по мере их возникновения. Идет запись наdaemon level и на container level. Давайте посмотрим на разные уровни ведения журнала.

Журнал демона

На уровне ведения журнала демона доступно четыре уровня ведения журнала:

  • Debug - В нем подробно описана вся возможная информация, обрабатываемая процессом демона.

  • Info - В нем подробно описаны все ошибки + информация, обрабатываемая процессом демона.

  • Errors - Подробно описаны все ошибки, обработанные процессом демона.

  • Fatal - В нем подробно описаны только все фатальные ошибки, обработанные процессом демона.

Выполните следующие шаги, чтобы узнать, как включить ведение журнала.

Step 1 - Во-первых, нам нужно остановить docker daemon process, если он уже запущен. Это можно сделать с помощью следующей команды -

sudo service docker stop

Step 2 - Теперь нам нужно запустить docker daemon process. Но на этот раз нам нужно добавить–lпараметр, чтобы указать параметр ведения журнала. Итак, давайте выполним следующую команду при запускеdocker daemon process.

sudo dockerd –l debug &

О приведенной выше команде необходимо отметить следующие моменты:

  • dockerd исполняемый файл для docker daemon process.

  • В –lопция используется для указания уровня ведения журнала. В нашем случае мы ставим это как отладка

  • & используется для возврата в командную строку после включения ведения журнала.

Как только вы запустите процесс Docker с ведением журнала, вы также увидите Debug Logs отправляется на консоль.

Теперь, если вы выполните любую команду Docker, например docker images, информация об отладке также будет отправлена ​​на консоль.

Ведение журнала контейнеров

Ведение журнала также доступно на уровне контейнера. Итак, в нашем примере давайте сначала развернем контейнер Ubuntu. Мы можем сделать это с помощью следующей команды.

sudo docker run –it ubuntu /bin/bash

Теперь мы можем использовать docker log command чтобы увидеть логи контейнера.

Синтаксис

Docker logs containerID

Параметры

  • containerID - Это идентификатор контейнера, для которого вам нужно просмотреть логи.

пример

На нашем хосте Docker давайте выполним следующую команду. Перед этим вы можете выполнять некоторые команды, находясь в контейнере.

sudo docker logs 6bfb1271fcdd

Вывод

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

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

В этой главе мы увидим, как начать работу с Docker Compose. Затем мы рассмотрим, как запустить и запустить простой сервис с MySQL и NGNIX с помощью Docker Compose.

Docker Compose ─ Установка

Чтобы запустить Docker Compose, необходимо выполнить следующие шаги.

Step 1 - Загрузите необходимые файлы из github используя следующую команду -

curl -L "https://github.com/docker/compose/releases/download/1.10.0-rc2/dockercompose
   -$(uname -s) -$(uname -m)" -o /home/demo/docker-compose

Приведенная выше команда загрузит последнюю версию Docker Compose, которая на момент написания этой статьи 1.10.0-rc2. Затем он сохранит его в каталоге/home/demo/.

Step 2 - Далее нам нужно предоставить execute privileges в загруженный файл Docker Compose, используя следующую команду -

chmod +x /home/demo/docker-compose

Затем мы можем использовать следующую команду, чтобы увидеть compose версия.

Синтаксис

docker-compose version

Параметры

  • version - Используется, чтобы указать, что нам нужны сведения о версии Docker Compose.

Вывод

Отобразятся сведения о версии Docker Compose.

пример

В следующем примере показано, как получить docker-compose версия.

sudo ./docker-compose -version

Вывод

Затем вы получите следующий результат -

Создание вашего первого файла Docker-Compose

Теперь давайте продолжим и создадим наш первый файл Docker Compose. Все файлы Docker Compose являются файлами YAML. Вы можете создать его с помощью редактора vim. Итак, выполните следующую команду, чтобы создатьcompose файл -

sudo vim docker-compose.yml

Давайте внимательно посмотрим на различные детали этого файла -

  • В database и webключевое слово используются для определения двух отдельных служб. Один будет управлять нашимmysql база данных, а другой будет нашим nginx веб сервер.

  • В image ключевое слово используется для указания изображения из dockerhub для нашего mysql и nginx контейнеры

  • Для базы данных мы используем ключевое слово ports, чтобы указать порты, которые должны быть открыты для mysql.

  • А затем мы также указываем переменные среды для mysql которые необходимы для запуска mysql.

Теперь давайте запустим наш файл Docker Compose, используя следующую команду -

sudo ./docker-compose up

Эта команда примет docker-compose.yml файл в вашем локальном каталоге и начните создавать контейнеры.

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

И когда вы делаете docker ps, вы можете видеть, что контейнеры действительно работают.

Docker имеет интеграцию со многими инструментами непрерывной интеграции, в которые также входит популярный инструмент CI, известный как Jenkins. В Jenkins доступны плагины, которые можно использовать для работы с контейнерами. Итак, давайте быстро рассмотрим плагин Docker, доступный для инструмента Jenkins.

Пойдем шаг за шагом и посмотрим, что доступно в Jenkins для контейнеров Docker.

Step 1 - Перейдите на панель управления Jenkins и нажмите Manage Jenkins.

Step 2 - Перейти к Manage Plugins.

Step 3- Найдите плагины Docker. Выберите плагин Docker и нажмитеInstall without restart кнопка.

Step 4- После завершения установки перейдите к своей работе на панели управления Jenkins. В нашем примере у нас есть задание под названиемDemo.

Step 5 - В задании, когда вы переходите к этапу сборки, теперь вы можете увидеть возможность запуска и остановки контейнеров.

Step 6- В качестве простого примера вы можете выбрать дополнительную опцию, чтобы останавливать контейнеры после завершения сборки. Затем щелкните значокSave кнопка.

А теперь просто запустите свою работу в Jenkins. Теперь в выводе консоли вы увидите, что команда «Остановить все контейнеры» была выполнена.

Kubernetes - это фреймворк для оркестровки контейнеров Docker, который помогает предоставлять контейнеры как сервисы внешнему миру. Например, у вас может быть две службы - одна служба будет содержатьnginx и mongoDB, а другой сервис будет содержать nginx и redis. Каждая служба может иметь IP-адрес или точку обслуживания, к которой могут подключаться другие приложения. Затем Kubernetes используется для управления этими сервисами.

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

В minionэто узел, на котором работают все службы. У вас может быть много миньонов одновременно. На каждом миньоне будет один или несколько POD. КаждыйPODэто похоже на хостинг услуги. Затем каждый POD содержит контейнеры Docker. На каждом POD может размещаться отдельный набор контейнеров Docker. Затем прокси-сервер используется для управления открытием этих служб внешнему миру.

Kubernetes имеет в своей архитектуре несколько компонентов. Роль каждого компонента объясняется ниже & mius;

  • etcd - Этот компонент является высокодоступным key-value магазин, который используется для хранения shared configuration и service discovery. Здесь различные приложения смогут подключаться к службам черезdiscovery service.

  • Flannel - Это серверная сеть, которая требуется для контейнеров.

  • kube-apiserver - Это API, который можно использовать для оркестровки контейнеров Docker.

  • kube-controller-manager - Используется для управления Kubernetes services.

  • kube-scheduler - Это используется для планирования контейнеров на хостах.

  • Kubelet - Используется для управления запуском контейнеров через manifest files.

  • kube-proxy - Это используется для предоставления сетевых прокси-сервисов внешнему миру.

В этой главе мы увидим, как установить Kubenetes через kubeadm. Это инструмент, который помогает в установке Kubernetes. Пойдем шаг за шагом и узнаем, как установить Kubernetes.

Step 1 - Убедитесь, что Ubuntu server version вы работаете над 16.04.

Step 2 - Убедитесь, что вы создали ssh ключ, который можно использовать для sshавторизоваться. Вы можете сделать это с помощью следующей команды.

ssh-keygen

Это сгенерирует ключ в вашем home folder как показано ниже.

Step 3 - Затем, в зависимости от вашей версии Ubuntu, вам нужно будет добавить соответствующий сайт в docker.list для apt package manager, так что он сможет обнаружить Kubernetes packages из kubernetes сайт и загрузите их соответственно.

Мы можем сделать это с помощью следующих команд.

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -  
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/docker.list

Step 4 - Затем мы выпускаем обновление apt-get, чтобы убедиться, что все пакеты загружены на сервер Ubuntu.

Step 5 - Установите пакет Docker, как описано в предыдущих главах.

Step 6 - Теперь пора установить kubernetes установив следующие пакеты -

apt-get install –y kubelet kubeadm kubectl kubernetes-cni

Step 7 - Когда-то все kubernetes пакеты загружены, пора запустить контроллер kubernetes с помощью следующей команды -

kubeadm init

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