Докер — Обзор
Docker — это служба управления контейнерами. Ключевые слова Docker — разработка, доставка и запуск в любом месте. Вся идея Docker заключается в том, чтобы разработчики могли легко разрабатывать приложения, отправлять их в контейнеры, которые затем можно развернуть где угодно.
Первоначальный выпуск Docker состоялся в марте 2013 года, и с тех пор он стал модным словом для развития современного мира, особенно перед лицом Agile-проектов.
Особенности Docker
-
Docker имеет возможность уменьшить размер разработки, предоставляя меньшую площадь операционной системы через контейнеры.
-
С контейнерами для групп из разных подразделений, таких как разработка, контроль качества и эксплуатация, становится проще работать в разных приложениях.
-
Контейнеры Docker можно развернуть где угодно, на любых физических и виртуальных машинах и даже в облаке.
-
Поскольку контейнеры Docker довольно легкие, их очень легко масштабировать.
Docker имеет возможность уменьшить размер разработки, предоставляя меньшую площадь операционной системы через контейнеры.
С контейнерами для групп из разных подразделений, таких как разработка, контроль качества и эксплуатация, становится проще работать в разных приложениях.
Контейнеры Docker можно развернуть где угодно, на любых физических и виртуальных машинах и даже в облаке.
Поскольку контейнеры Docker довольно легкие, их очень легко масштабировать.
Компоненты Docker
Докер имеет следующие компоненты
-
Docker для Mac — позволяет запускать контейнеры Docker в Mac OS.
-
Docker для Linux — позволяет запускать Docker-контейнеры в ОС Linux.
-
Docker для Windows — позволяет запускать Docker-контейнеры в ОС Windows.
-
Docker Engine — используется для создания образов Docker и создания контейнеров Docker.
-
Docker Hub — это реестр, который используется для размещения различных образов Docker.
-
Docker Compose — используется для определения приложений с использованием нескольких контейнеров Docker.
Docker для Mac — позволяет запускать контейнеры Docker в Mac OS.
Docker для Linux — позволяет запускать Docker-контейнеры в ОС Linux.
Docker для Windows — позволяет запускать Docker-контейнеры в ОС Windows.
Docker Engine — используется для создания образов Docker и создания контейнеров Docker.
Docker Hub — это реестр, который используется для размещения различных образов Docker.
Docker Compose — используется для определения приложений с использованием нескольких контейнеров Docker.
Мы обсудим все эти компоненты подробно в следующих главах.
Официальный сайт Docker: https://www.docker.com/ На сайте есть вся информация и документация о программном обеспечении Docker. Он также имеет ссылки для загрузки различных операционных систем.
Установка Docker в Linux
Чтобы начать установку Docker, мы собираемся использовать экземпляр Ubuntu. Вы можете использовать Oracle Virtual Box для настройки виртуального экземпляра Linux, если у вас его еще нет.
На следующем снимке экрана показан простой сервер Ubuntu, установленный в Oracle Virtual Box. Существует пользователь ОС с именем demo, который был определен в системе с полным корневым доступом к серверу.
Чтобы установить Docker, нам нужно выполнить шаги, указанные ниже.
Шаг 1 — Перед установкой Docker вы должны убедиться, что у вас установлена правильная версия ядра Linux. Docker предназначен только для работы с ядром Linux версии 3.8 и выше. Мы можем сделать это, выполнив следующую команду.
uname
Этот метод возвращает системную информацию о системе Linux.
Синтаксис
uname -a
Опции
a — Это используется, чтобы гарантировать, что системная информация возвращается.
Возвращаемое значение
Этот метод возвращает следующую информацию о системе Linux —
- имя ядра
- имя узла
- выпуск ядра
- версия ядра
- машина
- процессор
- аппаратная платформа
- операционная система
пример
uname –a
Выход
Когда мы запустим вышеуказанную команду, мы получим следующий результат —
Из результатов видно, что версия ядра Linux — 4.2.0-27, что выше, чем версия 3.8, так что мы готовы идти дальше.
Шаг 2 — Вам необходимо обновить ОС последними пакетами, что можно сделать с помощью следующей команды:
apt-get
Этот метод устанавливает пакеты из Интернета в систему Linux.
Синтаксис
sudo apt-get update
Опции
-
sudo — команда sudo используется для обеспечения выполнения команды с правами root.
-
update — опция обновления используется, чтобы гарантировать, что все пакеты обновлены в системе Linux.
sudo — команда sudo используется для обеспечения выполнения команды с правами root.
update — опция обновления используется, чтобы гарантировать, что все пакеты обновлены в системе Linux.
Возвращаемое значение
Никто
пример
sudo apt-get update
Выход
Когда мы запустим указанную выше команду, мы получим следующий результат —
Эта команда подключится к Интернету и загрузит последние системные пакеты для Ubuntu.
Шаг 3 — Следующим шагом является установка необходимых сертификатов, которые потребуются для дальнейшей работы с сайтом Docker для загрузки необходимых пакетов Docker. Это можно сделать с помощью следующей команды.
sudo apt-get install apt-transport-https ca-certificates
Шаг 4 — Следующий шаг — добавить новый ключ GPG. Этот ключ необходим для обеспечения шифрования всех данных при загрузке необходимых пакетов для Docker.
Следующая команда загрузит ключ с идентификатором 58118E89F3A912897C070ADBF76221572C52609D с сервера ключей hkp: //ha.pool.sks-keyservers.net: 80 и добавит его в цепочку ключей adv . Обратите внимание, что этот конкретный ключ необходим для загрузки необходимых пакетов Docker.
Шаг 5 — Далее, в зависимости от версии Ubuntu, вам нужно будет добавить соответствующий сайт в список docker.list для менеджера пакетов apt , чтобы он мог обнаружить пакеты Docker с сайта Docker и загрузить их соответственно.
-
Precise 12.04 (LTS) ─ deb https://apt.dockerproject.org/repo ubuntu-Precision Main
-
Trusty 14.04 (LTS) ─ deb https://apt.dockerproject.org/repo/ ubuntu-trusty main
-
Хитрый 15.10 ─ deb https://apt.dockerproject.org/repo ubuntu-wily main
-
Xenial 16.04 (LTS) — https://apt.dockerproject.org/repo ubuntu-xenial main
Precise 12.04 (LTS) ─ deb https://apt.dockerproject.org/repo ubuntu-Precision Main
Trusty 14.04 (LTS) ─ deb https://apt.dockerproject.org/repo/ ubuntu-trusty main
Хитрый 15.10 ─ deb https://apt.dockerproject.org/repo ubuntu-wily main
Xenial 16.04 (LTS) — https://apt.dockerproject.org/repo ubuntu-xenial main
Поскольку нашей операционной системой является Ubuntu 14.04, мы будем использовать имя репозитория как «deb https://apt.dockerproject.org/repo ubuntu-trusty main».
И затем нам нужно будет добавить этот репозиторий в список docker.list, как упоминалось выше.
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main” | sudo tee /etc/apt/sources.list.d/docker.list
Шаг 6 — Затем мы запускаем команду apt-get update для обновления пакетов в системе Ubuntu.
Шаг 7 — Если вы хотите убедиться, что менеджер пакетов указывает на правильный репозиторий, вы можете сделать это, выполнив команду apt-cache .
apt-cache policy docker-engine
В результате вы получите ссылку на https://apt.dockerproject.org/repo/
Шаг 8 — Введите команду apt-get update, чтобы убедиться, что все пакеты в локальной системе обновлены.
Шаг 9 — Для Ubuntu Trusty, Wily и Xenial мы должны установить пакеты ядра linux-image-extra- *, которые позволяют использовать драйвер хранилища aufs . Этот драйвер используется более новыми версиями Docker.
Это можно сделать с помощью следующей команды.
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
Шаг 10 — Последний шаг — установить Docker, и мы можем сделать это с помощью следующей команды:
sudo apt-get install –y docker-engine
Здесь apt-get использует опцию установки для загрузки образа движка Docker с веб-сайта Docker и установки Docker.
Docker-engine — это официальный пакет от Docker Corporation для систем на основе Ubuntu.
В следующем разделе мы увидим, как проверить версию установленного Docker.
Версия Docker
Чтобы увидеть версию Docker, вы можете выполнить следующую команду:
Синтаксис
docker version
Опции
-
версия — используется для гарантии того, что команда Docker возвращает установленную версию Docker.
версия — используется для гарантии того, что команда Docker возвращает установленную версию Docker.
Возвращаемое значение
Выходные данные будут содержать различные сведения о версии Docker, установленной в системе.
пример
sudo docker version
Выход
Когда мы запустим вышеуказанную программу, мы получим следующий результат —
Информация о докере
Чтобы увидеть больше информации о Docker, работающем в системе, вы можете выполнить следующую команду:
Синтаксис
docker info
Опции
-
info — используется для того, чтобы команда Docker возвращала подробную информацию об установленной службе Docker.
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 ToolBox
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
После того, как установщик был загружен, дважды щелкните его, чтобы запустить установщик, а затем выполните действия, указанные ниже.
Шаг 1 — Нажмите на условия соглашения, а затем на кнопку «Установить», чтобы продолжить установку.
Шаг 2 — После завершения нажмите кнопку Готово, чтобы завершить установку.
Docker ToolBox
После того, как установщик был загружен, дважды щелкните его, чтобы запустить установщик, а затем выполните действия, указанные ниже.
Шаг 1 — Нажмите кнопку Далее на начальном экране.
Шаг 2. Сохраните местоположение по умолчанию на следующем экране и нажмите кнопку «Далее».
Шаг 3 — Оставьте компоненты по умолчанию и нажмите кнопку Далее, чтобы продолжить.
Шаг 4. Сохраните дополнительные задачи такими, какие они есть, и нажмите кнопку «Далее».
Шаг 5 — На последнем экране нажмите кнопку Установить.
Работа с Docker Toolbox
Давайте теперь посмотрим, как можно использовать Docker Toolbox для работы с контейнерами Docker в Windows. Первым шагом является запуск приложения Docker Toolbox, для которого создается ярлык на рабочем столе при установке панели инструментов Docker.
Далее вы увидите настройку, выполняемую при запуске Docker.
После этого вы увидите, что Docker настроен и запущен. Вы получите интерактивную оболочку для Docker.
Чтобы проверить, правильно ли работает Docker, мы можем использовать команду Docker run для загрузки и запуска простого контейнера HelloWorld Docker .
Работа команды запуска Docker приведена ниже —
docker run
Эта команда используется для запуска команды в контейнере Docker.
Синтаксис
docker run 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
Шаг 1 — Сначала вам нужно сделать простую регистрацию в Docker-хабе.
Шаг 2 — Как только вы зарегистрируетесь, вы войдете в Docker Hub.
Шаг 3 — Далее, давайте посмотрим и найдем изображение Дженкинса.
Шаг 4 — Если вы прокрутите вниз на той же странице, вы увидите команду Docker pull . Это будет использоваться для загрузки образа Jenkins на локальный сервер Ubuntu.
Шаг 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, чтобы мы могли соответствующим образом получить доступ к контейнеру.
Мы используем команду sudo, чтобы убедиться, что она работает с правами root.
Здесь jenkins — это имя образа, который мы хотим загрузить из центра Docker и установить на наш компьютер с Ubuntu.
-p используется для сопоставления номера порта внутреннего образа Docker с нашим основным сервером Ubuntu, чтобы мы могли соответствующим образом получить доступ к контейнеру.
После этого Jenkins будет успешно работать в качестве контейнера на компьютере с Ubuntu.
Докер — Изображения
В Docker все основано на изображениях. Изображение представляет собой комбинацию файловой системы и параметров. Давайте рассмотрим пример следующей команды в Docker.
docker run hello-world
-
Команда Docker специфична и сообщает программе Docker в операционной системе, что нужно что-то делать.
-
Команда run используется для упоминания того, что мы хотим создать экземпляр изображения, который затем называется контейнером .
-
Наконец, «hello-world» представляет изображение, из которого сделан контейнер.
Команда Docker специфична и сообщает программе Docker в операционной системе, что нужно что-то делать.
Команда run используется для упоминания того, что мы хотим создать экземпляр изображения, который затем называется контейнером .
Наконец, «hello-world» представляет изображение, из которого сделан контейнер.
Теперь давайте посмотрим, как мы можем использовать образ CentOS, доступный в Docker Hub, для запуска CentOS на нашей машине с Ubuntu. Мы можем сделать это, выполнив следующую команду на нашем компьютере с Ubuntu:
sudo docker run centos –it /bin/bash
Обратите внимание на следующие моменты о приведенной выше команде sudo —
-
Мы используем команду sudo, чтобы убедиться, что она работает с правами root .
-
Здесь centos — это имя образа, который мы хотим загрузить с Docker Hub и установить на наш компьютер с Ubuntu.
-
─ упоминается, что мы хотим работать в интерактивном режиме .
-
/ bin / bash используется для запуска оболочки bash после запуска и запуска CentOS.
Мы используем команду sudo, чтобы убедиться, что она работает с правами root .
Здесь centos — это имя образа, который мы хотим загрузить с Docker Hub и установить на наш компьютер с Ubuntu.
─ упоминается, что мы хотим работать в интерактивном режиме .
/ bin / bash используется для запуска оболочки bash после запуска и запуска CentOS.
Отображение изображений Docker
Чтобы просмотреть список образов Docker в системе, вы можете выполнить следующую команду.
docker images
Эта команда используется для отображения всех изображений, установленных в данный момент в системе.
Синтаксис
docker images
Опции
Никто
Возвращаемое значение
Вывод предоставит список изображений в системе.
пример
sudo docker images
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
Из приведенного выше вывода видно, что на сервере есть три изображения: centos, newcentos и jenkins . Каждое изображение имеет следующие атрибуты —
-
TAG — используется для логической маркировки изображений.
-
Идентификатор изображения — используется для уникальной идентификации изображения.
-
Создано — количество дней с момента создания изображения.
-
Виртуальный размер — размер изображения.
TAG — используется для логической маркировки изображений.
Идентификатор изображения — используется для уникальной идентификации изображения.
Создано — количество дней с момента создания изображения.
Виртуальный размер — размер изображения.
Загрузка изображений Docker
Изображения можно загрузить из Docker Hub с помощью команды Docker run . Давайте посмотрим подробно, как мы можем это сделать.
Синтаксис
Следующий синтаксис используется для запуска команды в контейнере Docker.
docker run image
Опции
-
Изображение — это имя изображения, которое используется для запуска контейнера.
Изображение — это имя изображения, которое используется для запуска контейнера.
Возвращаемое значение
Вывод выполнит команду в нужном контейнере.
пример
sudo docker run centos
Эта команда загрузит изображение centos , если оно еще не создано, и запустит ОС в качестве контейнера.
Выход
Когда мы запустим указанную выше команду, мы получим следующий результат —
Теперь вы увидите загруженный образ CentOS Docker. Теперь, если мы запустим команду Docker images, чтобы увидеть список изображений в системе, мы также сможем увидеть изображение centos .
Удаление изображений Docker
Образы Docker в системе можно удалить с помощью команды docker rmi . Давайте посмотрим на эту команду более подробно.
docker rmi
Эта команда используется для удаления образов Docker.
Синтаксис
docker rmi ImageID
Опции
-
ImageID — это идентификатор изображения, которое необходимо удалить.
ImageID — это идентификатор изображения, которое необходимо удалить.
Возвращаемое значение
Выходные данные будут содержать идентификатор изображения удаленного изображения.
пример
sudo docker rmi 7a86f8ffcb25
Здесь 7a86f8ffcb25 — это идентификатор изображения newcentos .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
Давайте посмотрим еще несколько команд Docker на изображениях.
докер изображения -q
Эта команда используется для возврата только идентификаторов изображений изображений.
Синтаксис
docker images
Опции
-
q — Указывает команде Docker возвращать только ID изображения.
q — Указывает команде Docker возвращать только ID изображения.
Возвращаемое значение
Выходные данные будут отображать только идентификаторы изображений на хосте Docker.
пример
sudo docker images -q
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
докер проверяет
Эта команда используется для просмотра деталей изображения или контейнера.
Синтаксис
docker inspect Repository
Опции
-
Репозиторий — это название образа.
Репозиторий — это название образа.
Возвращаемое значение
На выходе будет показана подробная информация об изображении.
пример
sudo docker inspect jenkins
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
Докер — Контейнеры
Контейнеры — это экземпляры образов Docker, которые можно запустить с помощью команды запуска Docker. Основное назначение Docker — запускать контейнеры. Давайте обсудим, как работать с контейнерами.
Запуск контейнера
Запуск контейнеров управляется командой запуска Docker. Чтобы запустить контейнер в интерактивном режиме, сначала запустите контейнер 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 перечислить все контейнеры в системе.
─a — сообщает команде docker ps перечислить все контейнеры в системе.
Возвращаемое значение
Вывод покажет все контейнеры.
пример
sudo docker ps -a
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
история докера
С помощью этой команды вы можете увидеть все команды, которые были запущены с изображением через контейнер.
Синтаксис
docker history ImageID
Опции
-
ImageID — это идентификатор изображения, для которого вы хотите увидеть все команды, которые были запущены для него.
ImageID — это идентификатор изображения, для которого вы хотите увидеть все команды, которые были запущены для него.
Возвращаемое значение
Вывод покажет все команды, запущенные для этого изображения.
пример
sudo docker history centos
Приведенная выше команда покажет все команды, которые были запущены для изображения centos .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
Докер — Работа с контейнерами
В этой главе мы подробно рассмотрим, что мы можем сделать с контейнерами.
верх докера
С помощью этой команды вы можете увидеть основные процессы в контейнере.
Синтаксис
docker top ContainerID
Опции
-
ContainerID — это идентификатор контейнера, для которого вы хотите увидеть топовые процессы.
ContainerID — это идентификатор контейнера, для которого вы хотите увидеть топовые процессы.
Возвращаемое значение
Вывод покажет процессы верхнего уровня в контейнере.
пример
sudo docker top 9f215ed0b0d3
Приведенная выше команда покажет процессы верхнего уровня в контейнере.
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
остановка докера
Эта команда используется для остановки работающего контейнера.
Синтаксис
docker stop ContainerID
Опции
-
ContainerID — это идентификатор контейнера, который необходимо остановить.
ContainerID — это идентификатор контейнера, который необходимо остановить.
Возвращаемое значение
Вывод выдаст идентификатор остановленного контейнера.
пример
sudo docker stop 9f215ed0b0d3
Приведенная выше команда остановит контейнер Docker 9f215ed0b0d3 .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
Докер Р.М.
Эта команда используется для удаления контейнера.
Синтаксис
docker rm ContainerID
Опции
-
ContainerID — это идентификатор контейнера, который необходимо удалить.
ContainerID — это идентификатор контейнера, который необходимо удалить.
Возвращаемое значение
Вывод даст идентификатор удаленного контейнера.
пример
sudo docker rm 9f215ed0b0d3
Приведенная выше команда удалит Docker-контейнер 9f215ed0b0d3 .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
статистика докера
Эта команда используется для предоставления статистики работающего контейнера.
Синтаксис
docker stats ContainerID
Опции
-
ContainerID — это идентификатор контейнера, для которого должна быть предоставлена статистика.
ContainerID — это идентификатор контейнера, для которого должна быть предоставлена статистика.
Возвращаемое значение
Выходные данные будут отображать использование процессора и памяти контейнера.
пример
sudo docker stats 9f215ed0b0d3
Приведенная выше команда обеспечит использование ЦП и памяти Контейнера 9f215ed0b0d3 .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
присоединение докера
Эта команда используется для подключения к работающему контейнеру.
Синтаксис
docker attach ContainerID
Опции
-
ContainerID — это идентификатор контейнера, к которому вам нужно присоединиться.
ContainerID — это идентификатор контейнера, к которому вам нужно присоединиться.
Возвращаемое значение
Никто
пример
sudo docker attach 07b0b6f434fe
Приведенная выше команда будет прикреплена к Docker-контейнеру 07b0b6f434fe .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
После подключения к контейнеру Docker вы можете запустить приведенную выше команду, чтобы увидеть использование процесса в этом контейнере Docker.
докер пауза
Эта команда используется для приостановки процессов в работающем контейнере.
Синтаксис
docker pause ContainerID
Опции
-
ContainerID — это идентификатор контейнера, для которого необходимо приостановить процессы в контейнере.
ContainerID — это идентификатор контейнера, для которого необходимо приостановить процессы в контейнере.
Возвращаемое значение
ContainerID приостановленного контейнера.
пример
sudo docker pause 07b0b6f434fe
Приведенная выше команда приостановит процессы в работающем контейнере 07b0b6f434fe .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
докер, пауза
Эта команда используется для приостановки процессов в работающем контейнере.
Синтаксис
docker unpause ContainerID
Опции
-
ContainerID — это идентификатор контейнера, для которого необходимо приостановить процессы в контейнере.
ContainerID — это идентификатор контейнера, для которого необходимо приостановить процессы в контейнере.
Возвращаемое значение
ContainerID запущенного контейнера.
пример
sudo docker unpause 07b0b6f434fe
Приведенная выше команда отключит процессы в работающем контейнере: 07b0b6f434fe
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
докер убить
Эта команда используется для уничтожения процессов в работающем контейнере.
Синтаксис
docker kill ContainerID
Опции
-
ContainerID — это идентификатор контейнера, для которого вам нужно убить процессы в контейнере.
ContainerID — это идентификатор контейнера, для которого вам нужно убить процессы в контейнере.
Возвращаемое значение
ContainerID запущенного контейнера.
пример
sudo docker kill 07b0b6f434fe
Приведенная выше команда уничтожит процессы в работающем контейнере 07b0b6f434fe .
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
Docker — жизненный цикл контейнера
На следующем рисунке показан весь жизненный цикл контейнера Docker.
-
Изначально контейнер Docker будет в созданном состоянии.
-
Затем контейнер Docker переходит в состояние выполнения при использовании команды Docker run .
-
Команда Docker kill используется для уничтожения существующего контейнера Docker.
-
Команда Docker pause используется для приостановки существующего контейнера Docker.
-
Команда остановки Docker используется для приостановки существующего контейнера Docker.
-
Команда запуска Docker используется для перевода контейнера из остановленного состояния в рабочее состояние.
Изначально контейнер Docker будет в созданном состоянии.
Затем контейнер Docker переходит в состояние выполнения при использовании команды Docker run .
Команда Docker kill используется для уничтожения существующего контейнера Docker.
Команда Docker pause используется для приостановки существующего контейнера Docker.
Команда остановки Docker используется для приостановки существующего контейнера Docker.
Команда запуска Docker используется для перевода контейнера из остановленного состояния в рабочее состояние.
Докер — Архитектура
На следующем рисунке показана стандартная и традиционная архитектура виртуализации .
-
Сервер — это физический сервер, который используется для размещения нескольких виртуальных машин.
-
Хост-ОС является базовой машиной, такой как Linux или Windows.
-
Гипервизор — это VMWare или Windows Hyper V, который используется для размещения виртуальных машин.
-
Затем вы должны установить несколько операционных систем в качестве виртуальных машин поверх существующего гипервизора в качестве гостевой ОС.
-
Затем вы размещаете свои приложения поверх каждой гостевой ОС.
Сервер — это физический сервер, который используется для размещения нескольких виртуальных машин.
Хост-ОС является базовой машиной, такой как Linux или Windows.
Гипервизор — это VMWare или Windows Hyper V, который используется для размещения виртуальных машин.
Затем вы должны установить несколько операционных систем в качестве виртуальных машин поверх существующего гипервизора в качестве гостевой ОС.
Затем вы размещаете свои приложения поверх каждой гостевой ОС.
На следующем рисунке показано виртуализация нового поколения, которая включена через докеры. Давайте посмотрим на различные слои.
-
Сервер — это физический сервер, который используется для размещения нескольких виртуальных машин. Так что этот слой остается прежним.
-
Хост-ОС является базовой машиной, такой как Linux или Windows. Так что этот слой остается прежним.
-
Теперь приходит новое поколение, которое является двигателем Docker. Это используется для запуска операционной системы, которая раньше была виртуальными машинами в качестве контейнеров Docker.
-
Все приложения теперь работают как контейнеры Docker.
Сервер — это физический сервер, который используется для размещения нескольких виртуальных машин. Так что этот слой остается прежним.
Хост-ОС является базовой машиной, такой как Linux или Windows. Так что этот слой остается прежним.
Теперь приходит новое поколение, которое является двигателем Docker. Это используется для запуска операционной системы, которая раньше была виртуальными машинами в качестве контейнеров Docker.
Все приложения теперь работают как контейнеры Docker.
Очевидным преимуществом этой архитектуры является то, что вам не нужно иметь дополнительное оборудование для гостевой ОС. Все работает как контейнеры Docker.
Докер — Контейнер и Хосты
Преимущество движка Docker заключается в том, что он предназначен для работы в различных операционных системах. Мы уже видели установку в Windows и видели все команды Docker в системах Linux. Теперь давайте посмотрим на различные команды Docker в ОС Windows.
Docker Images
Давайте запустим команду Docker images на хосте Windows.
Отсюда мы видим, что у нас есть два изображения — Ubuntu и Hello-World .
Запуск контейнера
Теперь давайте запустим контейнер в хосте Windows Docker.
Мы видим, что, запустив контейнер, мы теперь можем запустить контейнер Ubuntu на хосте Windows.
Список всех контейнеров
Давайте перечислим все контейнеры на хосте Windows.
Остановка контейнера
Давайте теперь остановим работающий контейнер на хосте Windows.
Итак, вы можете видеть, что движок Docker довольно последовательный, когда речь идет о разных хостах Docker, и он работает в Windows так же, как и в Linux.
Докер — Настройка
В этой главе мы рассмотрим различные варианты настройки Docker.
остановка сервисного докера
Эта команда используется для остановки процесса демона Docker.
Синтаксис
service docker stop
Опции
Никто
Возвращаемое значение
Сообщение, показывающее, что процесс Docker остановлен.
пример
sudo service docker stop
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
запуск сервисного докера
Эта команда используется для запуска процесса демона Docker.
Синтаксис
service docker start
Опции
Никто
Возвращаемое значение
Сообщение, показывающее, что процесс Docker запущен.
пример
sudo service docker start
Выход
Когда мы запустим указанную выше команду, она выдаст следующий результат:
Докер — Контейнеры и снаряды
По умолчанию при запуске контейнера вы также будете использовать команду оболочки при запуске контейнера, как показано ниже. Это то, что мы видели в предыдущих главах, когда работали с контейнерами.
На приведенном выше снимке экрана вы можете заметить, что мы выполнили следующую команду:
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 . Мы можем получить идентификатор процесса с помощью команды проверки Docker и отфильтровать его через Pid .
Как видно на скриншоте выше, мы сначала использовали команду docker ps, чтобы увидеть запущенные контейнеры. Мы видим, что существует один работающий контейнер с идентификатором ef42a4c5e663.
Затем мы используем команду Docker inspect для проверки конфигурации этого контейнера, а затем используем команду grep, чтобы просто отфильтровать ID процесса. И из вывода мы видим, что идентификатор процесса равен 2978.
Теперь, когда у нас есть идентификатор процесса, мы можем продолжить и использовать команду nsenter для подключения к контейнеру Docker.
nsenter
Этот метод позволяет присоединиться к контейнеру, не выходя из контейнера.
Синтаксис
Команда nsenter –m –u –n –p –i –t containerID
Опции
-
-u используется для упоминания пространства имен Uts
-
-m используется для упоминания пространства имен монтирования
-
-n используется для упоминания пространства имен сети
-
-p используется для упоминания пространства имен процесса
-
-i s, чтобы контейнер работал в интерактивном режиме.
-
-t используется для подключения потоков ввода-вывода контейнера к операционной системе хоста.
-
containerID — это идентификатор контейнера.
-
Команда — это команда для запуска в контейнере.
-u используется для упоминания пространства имен Uts
-m используется для упоминания пространства имен монтирования
-n используется для упоминания пространства имен сети
-p используется для упоминания пространства имен процесса
-i s, чтобы контейнер работал в интерактивном режиме.
-t используется для подключения потоков ввода-вывода контейнера к операционной системе хоста.
containerID — это идентификатор контейнера.
Команда — это команда для запуска в контейнере.
Возвращаемое значение
Никто
пример
sudo nsenter –m –u –n –p –i –t 2978 /bin/bash
Выход
Из вывода мы можем наблюдать следующие моменты —
-
Приглашение изменяется непосредственно в оболочке bash, когда мы запускаем команду nsenter .
-
Затем мы запускаем команду выхода . Теперь обычно, если вы не используете команду nsenter , контейнер будет уничтожен. Но вы заметите, что когда мы запускаем команду nsenter , контейнер все еще работает.
Приглашение изменяется непосредственно в оболочке bash, когда мы запускаем команду nsenter .
Затем мы запускаем команду выхода . Теперь обычно, если вы не используете команду nsenter , контейнер будет уничтожен. Но вы заметите, что когда мы запускаем команду nsenter , контейнер все еще работает.
Докер — Файл
В предыдущих главах мы видели различные файлы изображений, такие как Centos, которые загружаются из Docker-концентратора, из которого вы можете раскрутить контейнеры. Пример снова показан ниже.
Если мы используем команду Docker images , мы можем видеть существующие образы в нашей системе. Из приведенного выше скриншота видно, что есть два изображения: centos и nsenter .
Но Docker также дает вам возможность создавать свои собственные изображения Docker, и это можно сделать с помощью Docker Files . Docker File — это простой текстовый файл с инструкциями по созданию ваших изображений.
Следующие шаги объясняют, как вам следует создать файл Docker.
Шаг 1 — Создайте файл с именем Docker File и отредактируйте его с помощью vim . Обратите внимание, что имя файла должно быть «Dockerfile» с «D» в качестве заглавной.
Шаг 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 File с помощью команды #
-
Следующая строка должна начинаться с ключевого слова FROM . Он сообщает докеру, из какого базового изображения вы хотите основать свое изображение. В нашем примере мы создаем образ из образа Ubuntu .
-
Следующая команда — это человек, который собирается сохранить этот образ. Здесь вы указываете ключевое слово MAINTAINER и просто упоминаете идентификатор электронной почты.
-
Команда RUN используется для запуска инструкций для образа. В нашем случае мы сначала обновляем нашу систему Ubuntu, а затем устанавливаем сервер nginx на наш образ Ubuntu .
-
Последняя команда используется для отображения сообщения пользователю.
Первая строка «# Это образец изображения» — это комментарий. Вы можете добавить комментарии в Docker File с помощью команды #
Следующая строка должна начинаться с ключевого слова FROM . Он сообщает докеру, из какого базового изображения вы хотите основать свое изображение. В нашем примере мы создаем образ из образа Ubuntu .
Следующая команда — это человек, который собирается сохранить этот образ. Здесь вы указываете ключевое слово MAINTAINER и просто упоминаете идентификатор электронной почты.
Команда RUN используется для запуска инструкций для образа. В нашем случае мы сначала обновляем нашу систему Ubuntu, а затем устанавливаем сервер nginx на наш образ Ubuntu .
Последняя команда используется для отображения сообщения пользователю.
Шаг 3 — Сохраните файл. В следующей главе мы обсудим, как создать изображение.
Докер — Создание файлов
Мы создали файл Docker в последней главе. Пришло время создать файл Docker. Файл Docker может быть собран с помощью следующей команды —
docker build
Давайте узнаем больше об этой команде.
сборка докера
Этот метод позволяет пользователям создавать свои собственные образы Docker.
Синтаксис
docker build -t ImageName:TagName dir
Опции
-
-t — упомянуть тег к изображению
-
ImageName — это имя, которое вы хотите дать своему изображению.
-
TagName — это тег, который вы хотите присвоить своему изображению.
-
Dir — каталог, в котором находится файл Docker.
-t — упомянуть тег к изображению
ImageName — это имя, которое вы хотите дать своему изображению.
TagName — это тег, который вы хотите присвоить своему изображению.
Dir — каталог, в котором находится файл Docker.
Возвращаемое значение
Никто
пример
sudo docker build –t myimage:0.1.
Здесь myimage — это имя, которое мы даем изображению, а 0.1 — это номер тега, который мы даем нашему изображению.
Поскольку файл Docker находится в текущем рабочем каталоге, мы использовали «.» в конце команды указать текущий рабочий каталог.
Выход
Из выходных данных вы сначала увидите, что образ Ubuntu будет загружен из Docker Hub, поскольку на машине нет локального образа.
Наконец, когда сборка будет завершена, все необходимые команды будут запущены на образе.
После этого вы увидите успешно построенное сообщение и идентификатор нового изображения. Когда вы запустите команду Docker images , вы сможете увидеть новое изображение.
Теперь вы можете создавать контейнеры из вашего нового изображения.
Докер — публичные репозитории
Общедоступные репозитории могут использоваться для размещения образов Docker, которые могут использоваться всеми остальными. Примером являются изображения, которые доступны в Docker Hub. Большинство изображений, таких как Centos, Ubuntu и Jenkins, являются общедоступными для всех. Мы также можем сделать наши изображения доступными, опубликовав их в общедоступном репозитории на Docker Hub.
В нашем примере мы будем использовать репозиторий myimage, встроенный в главу «Создание файлов Docker», и загрузить это изображение в Docker Hub. Давайте сначала рассмотрим изображения на нашем хосте Docker, чтобы увидеть, что мы можем отправить в реестр Docker.
Здесь у нас есть изображение myimage: 0.1, которое было создано как часть главы «Создание файлов Docker». Давайте использовать это для загрузки в публичный репозиторий Docker.
Следующие шаги объясняют, как вы можете загрузить изображение в публичный репозиторий.
Шаг 1 — Войдите в Docker Hub и создайте свой репозиторий. Это хранилище, где будет храниться ваше изображение. Перейдите на https://hub.docker.com/ и войдите в систему, используя свои учетные данные.
Шаг 2 — Нажмите кнопку «Создать репозиторий» на приведенном выше экране и создайте репозиторий с именем demorep . Убедитесь, что видимость хранилища общедоступна.
Как только репозиторий создан, запишите команду pull, которая прикреплена к репозиторию.
Команда pull, которая будет использоваться в нашем репозитории, выглядит следующим образом:
docker pull demousr/demorep
Шаг 3 — Теперь вернитесь к Docker Host. Здесь нам нужно пометить наше изображение новым репозиторием, созданным в Docker Hub. Мы можем сделать это с помощью команды тега Docker.
Мы узнаем больше об этой команде тегов позже в этой главе.
Шаг 4 — Введите команду Docker login для входа в репозиторий Docker Hub из командной строки. Команда входа в Docker запросит у вас имя пользователя и пароль для хранилища Docker Hub.
Шаг 5 — После того, как изображение было помечено, пришло время отправить изображение в хранилище Docker Hub. Мы можем сделать это с помощью команды Docker push . Мы узнаем больше об этой команде позже в этой главе.
тег докера
Этот метод позволяет пометить изображение в соответствующем хранилище.
Синтаксис
docker tag imageID Repositoryname
Опции
-
imageID — это ImageID, который необходимо пометить в хранилище.
-
Имя репозитория — это имя репозитория, к которому должен быть привязан ImageID.
imageID — это ImageID, который необходимо пометить в хранилище.
Имя репозитория — это имя репозитория, к которому должен быть привязан ImageID.
Возвращаемое значение
Никто
пример
sudo docker tag ab0c1d3744dd demousr/demorep:1.0
Выход
Пример вывода приведенного выше примера приведен ниже.
толчок докера
Этот метод позволяет передавать изображения в Docker Hub.
Синтаксис
docker push Repositoryname
Опции
-
Имя репозитория — это имя репозитория, которое необходимо отправить в Docker Hub.
Имя репозитория — это имя репозитория, которое необходимо отправить в Docker Hub.
Возвращаемое значение
Длинный идентификатор хранилища отправляется в Docker Hub.
пример
sudo docker push demousr/demorep:1.0
Выход
Если вы вернетесь на страницу Docker Hub и зайдете в свой репозиторий, вы увидите имя тега в репозитории.
Теперь давайте попробуем выгрузить репозиторий, который мы загрузили, на наш хост Docker. Давайте сначала удалим изображения, myimage: 0.1 и demousr / demorep: 1.0 , с локального хоста Docker. Давайте используем команду Pucker Docker, чтобы извлечь хранилище из Docker Hub.
На приведенном выше снимке экрана видно, что команда Pucker Docker взяла наш новый репозиторий из Docker Hub и разместила его на нашей машине.
Docker — Управление портами
В Docker сами контейнеры могут иметь приложения, работающие на портах. Когда вы запускаете контейнер, если вы хотите получить доступ к приложению в контейнере через номер порта, вам необходимо сопоставить номер порта контейнера с номером порта хоста Docker. Давайте посмотрим на пример того, как этого можно достичь.
В нашем примере мы собираемся загрузить контейнер Jenkins из Docker Hub. Затем мы сопоставим номер порта Jenkins с номером порта на хосте Docker.
Шаг 1 — Во-первых, вам нужно выполнить простую регистрацию в Docker Hub.
Шаг 2 — Как только вы зарегистрируетесь, вы войдете в Docker Hub.
Шаг 3 — Далее, давайте посмотрим и найдем изображение Дженкинса.
Шаг 4 — Если вы прокрутите вниз на той же странице, вы увидите команду Docker pull . Это будет использоваться для загрузки образа Jenkins на локальный сервер Ubuntu.
Шаг 5 — Теперь перейдите на сервер Ubuntu и выполните команду —
sudo docker pull jenkins
Шаг 6 — Чтобы понять, какие порты открываются контейнером, вы должны использовать команду Docker inspect для проверки образа.
Давайте теперь узнаем больше об этой команде осмотра .
докер проверяет
Этот метод позволяет возвращать низкоуровневую информацию о контейнере или изображении.
Синтаксис
docker inspect Container/Image
Опции
-
Контейнер / Изображение — Контейнер или изображение для проверки
Контейнер / Изображение — Контейнер или изображение для проверки
Возвращаемое значение
Низкоуровневая информация об изображении или контейнере в формате JSON.
пример
sudo docker inspect jenkins
Выход
Вывод команды inspect дает вывод JSON. Если мы наблюдаем вывод, мы видим, что есть раздел «ExposedPorts» и видим, что упоминаются два порта. Один — это порт данных 8080, а другой — порт управления 50000.
Чтобы запустить Jenkins и отобразить порты, вам нужно изменить команду запуска Docker и добавить опцию «p», которая определяет отображение портов. Итак, вам нужно выполнить следующую команду —
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
Левая часть сопоставления номеров портов — это порт хоста Docker для сопоставления, а правая часть — номер порта контейнера Docker.
Когда вы откроете браузер и перейдете к хосту Docker через порт 8080, вы увидите, что Jenkins запущен и работает.
Докер — Частные Реестры
У вас может возникнуть необходимость иметь свои собственные частные репозитории. Возможно, вы не захотите размещать репозитории в Docker Hub. Для этого есть сам контейнер репозитория от Docker. Давайте посмотрим, как мы можем скачать и использовать контейнер для реестра.
Шаг 1 — Используйте команду Docker run для загрузки частного реестра. Это можно сделать с помощью следующей команды.
sudo docker run –d –p 5000:5000 –-name registry registry:2
Следующие пункты должны быть отмечены о вышеупомянутой команде —
-
Реестр — это контейнер, управляемый Docker, который может использоваться для размещения частных репозиториев.
-
Номер порта, предоставляемый контейнером, равен 5000. Следовательно, с помощью команды –p мы сопоставляем этот номер порта с номером порта 5000 на нашем локальном хосте.
-
Мы просто помечаем контейнер реестра как «2», чтобы дифференцировать его на хосте Docker.
-
Опция –d используется для запуска контейнера в отдельном режиме. Это так, что контейнер может работать в фоновом режиме
Реестр — это контейнер, управляемый Docker, который может использоваться для размещения частных репозиториев.
Номер порта, предоставляемый контейнером, равен 5000. Следовательно, с помощью команды –p мы сопоставляем этот номер порта с номером порта 5000 на нашем локальном хосте.
Мы просто помечаем контейнер реестра как «2», чтобы дифференцировать его на хосте Docker.
Опция –d используется для запуска контейнера в отдельном режиме. Это так, что контейнер может работать в фоновом режиме
Шаг 2 — Давайте сделаем докер ps, чтобы увидеть, что контейнер реестра действительно работает.
Теперь мы подтвердили, что контейнер реестра действительно работает.
Шаг 3 — Теперь давайте пометим одно из наших существующих изображений, чтобы мы могли отправить его в наш локальный репозиторий. В нашем примере, поскольку у нас есть изображение centos, доступное локально, мы собираемся пометить его в нашем частном репозитории и добавить имя тега centos .
sudo docker tag 67591570dd29 localhost:5000/centos
Следующие пункты должны быть отмечены о вышеупомянутой команде —
-
67591570dd29 относится к идентификатору изображения для изображения centos .
-
localhost: 5000 — это местоположение нашего частного хранилища.
-
Мы помечаем имя хранилища как centos в нашем личном хранилище.
67591570dd29 относится к идентификатору изображения для изображения centos .
localhost: 5000 — это местоположение нашего частного хранилища.
Мы помечаем имя хранилища как centos в нашем личном хранилище.
Шаг 4 — Теперь давайте с помощью команды Docker push отправим репозиторий в наш приватный репозиторий.
sudo docker push localhost:5000/centos
Здесь мы отправляем изображение centos в частный репозиторий, размещенный на localhost: 5000 .
Шаг 5 — Теперь давайте удалим локальные изображения, которые мы имеем для centos, используя команды docker rmi . Затем мы можем загрузить необходимое изображение centos из нашего частного репозитория.
sudo docker rmi centos:latest sudo docker rmi 67591570dd29
Шаг 6. Теперь, когда на локальном компьютере у нас нет изображений centos , мы можем использовать следующую команду Docker pull для извлечения изображения centos из нашего частного репозитория.
sudo docker pull localhost:5000/centos
Здесь мы переносим изображение centos в частный репозиторий, размещенный на localhost: 5000 .
Если вы теперь видите изображения в вашей системе, вы также увидите изображение centos .
Docker — Создание файла Docker веб-сервера
Мы уже узнали, как использовать Docker File для создания наших собственных пользовательских образов. Теперь давайте посмотрим, как мы можем создать образ веб-сервера, который можно использовать для создания контейнеров.
В нашем примере мы собираемся использовать веб-сервер Apache в Ubuntu для создания нашего образа. Давайте выполним шаги, приведенные ниже, чтобы создать файл Docker нашего веб-сервера.
Шаг 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 в фоновом режиме.
Сначала мы создаем наш образ из базового образа Ubuntu.
Далее мы собираемся использовать команду RUN для обновления всех пакетов в системе Ubuntu.
Далее мы используем команду RUN для установки apache2 на наш образ.
Далее мы используем команду RUN для установки необходимых пакетов apache2 для нашего образа.
Далее мы используем команду RUN для очистки любых ненужных файлов из системы.
Команда EXPOSE используется для предоставления порта 80 Apache в контейнере хосту Docker.
Наконец, команда CMD используется для запуска apache2 в фоновом режиме.
Теперь, когда данные файла введены, просто сохраните файл.
Шаг 2 — Запустите команду сборки Docker, чтобы создать файл Docker. Это можно сделать с помощью следующей команды —
sudo docker build –t=”mywebserver” .
Мы помечаем наше изображение как mywebserver . Как только изображение будет построено, вы получите успешное сообщение о том, что файл создан.
Шаг 3 — Теперь, когда файл веб-сервера создан, пришло время создать контейнер из изображения. Мы можем сделать это с помощью команды запуска Docker.
sudo docker run –d –p 80:80 mywebserver
Следующие пункты должны быть отмечены о вышеупомянутой команде —
-
Номер порта, предоставляемый контейнером, равен 80. Следовательно, с помощью команды –p мы сопоставляем этот номер порта с номером порта 80 на нашем локальном хосте.
-
Опция –d используется для запуска контейнера в отдельном режиме. Это так, что контейнер может работать в фоновом режиме.
Номер порта, предоставляемый контейнером, равен 80. Следовательно, с помощью команды –p мы сопоставляем этот номер порта с номером порта 80 на нашем локальном хосте.
Опция –d используется для запуска контейнера в отдельном режиме. Это так, что контейнер может работать в фоновом режиме.
Если вы перейдете на порт 80 хоста Docker в своем веб-браузере, вы увидите, что Apache запущен и работает.
Docker — Команды команд
Докер имеет множество команд команд. Это команды, которые помещаются в Docker File. Давайте посмотрим на те, которые доступны.
CMD Инструкция
Эта команда используется для выполнения команды во время выполнения, когда выполняется контейнер.
Синтаксис
CMD command param1
Опции
-
command — это команда, запускаемая при запуске контейнера.
-
param1 — это параметр, введенный в команду.
command — это команда, запускаемая при запуске контейнера.
param1 — это параметр, введенный в команду.
Возвращаемое значение
Команда будет выполнена соответственно.
пример
В нашем примере мы введем простое эхо Hello World в наш файл Docker, создадим изображение и запустим из него контейнер.
Шаг 1 — Создайте файл Docker с помощью следующих команд —
FROM ubuntu MAINTAINER [email protected] CMD [“echo” , “hello world”]
Здесь CMD просто используется для печати Hello World .
Шаг 2 — Создайте образ с помощью команды сборки Docker.
Шаг 3 — Запустите контейнер с картинки.
ТОЧКА ВХОДА
Эта команда также может использоваться для выполнения команд во время выполнения для контейнера. Но мы можем быть более гибкими с помощью команды ENTRYPOINT.
Синтаксис
ENTRYPOINT command param1
Опции
-
command — это команда, запускаемая при запуске контейнера.
-
param1 — это параметр, введенный в команду.
command — это команда, запускаемая при запуске контейнера.
param1 — это параметр, введенный в команду.
Возвращаемое значение
Команда будет выполнена соответственно.
пример
Давайте посмотрим на пример, чтобы понять больше о ENTRYPOINT. В нашем примере мы введем простую команду echo в нашем файле Docker, создадим образ и запустим из него контейнер.
Шаг 1 — Создайте файл Docker с помощью следующих команд —
FROM ubuntu MAINTAINER [email protected] ENTRYPOINT [“echo”]
Шаг 2 — Создайте образ с помощью команды сборки Docker.
Шаг 3 — Запустите контейнер с картинки.
ENV
Эта команда используется для установки переменных среды в контейнере.
Синтаксис
ENV key value
Опции
-
Ключ — это ключ для переменной среды.
-
значение — это значение для переменной среды.
Ключ — это ключ для переменной среды.
значение — это значение для переменной среды.
Возвращаемое значение
Команда будет выполнена соответственно.
пример
В нашем примере мы введем простую команду echo в нашем файле Docker, создадим образ и запустим из него контейнер.
Шаг 1 — Создайте файл Docker с помощью следующих команд —
FROM ubuntu MAINTAINER [email protected] ENV var1=Tutorial var2=point
Шаг 2 — Создайте образ с помощью команды сборки Docker.
Шаг 3 — Запустите контейнер с картинки.
Шаг 4 — Наконец, выполните команду env, чтобы увидеть переменные среды.
WORKDIR
Эта команда используется для установки рабочего каталога контейнера.
Синтаксис
WORKDIR dirname
Опции
-
dirname — новый рабочий каталог. Если каталог не существует, он будет добавлен.
dirname — новый рабочий каталог. Если каталог не существует, он будет добавлен.
Возвращаемое значение
Команда будет выполнена соответственно.
пример
В нашем примере мы введем простую команду echo в нашем файле Docker, создадим образ и запустим из него контейнер.
Шаг 1 — Создайте файл Docker с помощью следующих команд —
FROM ubuntu MAINTAINER [email protected] WORKDIR /newtemp CMD pwd
Шаг 2 — Создайте образ с помощью команды сборки Docker.
Шаг 3 — Запустите контейнер с картинки.
Докер — Контейнерное соединение
Связывание контейнеров позволяет нескольким контейнерам связываться друг с другом. Это лучший вариант, чем разоблачение портов. Давайте пойдем шаг за шагом и узнаем, как это работает.
Шаг 1. Загрузите изображение Jenkins, если оно еще не создано, с помощью команды Jenkins pull .
Шаг 2 — Как только изображение станет доступным, запустите контейнер, но на этот раз вы можете указать имя контейнера, используя опцию –-name . Это будет наш исходный контейнер .
Шаг 3 — Затем пришло время запустить контейнер назначения, но на этот раз мы свяжем его с нашим исходным контейнером. Для нашего контейнера назначения мы будем использовать стандартный образ Ubuntu.
Когда вы выполните Docker PS , вы увидите, что оба контейнера работают.
Шаг 4 — Теперь прикрепите к принимающему контейнеру.
Затем запустите команду env . Вы заметите новые переменные для связи с исходным контейнером.
Докер — Хранение
Драйверы хранилища
Docker имеет несколько драйверов хранения, которые позволяют работать с соответствующими устройствами хранения. В следующей таблице показаны различные драйверы хранилища, а также технология, используемая для драйверов хранилища.
Технология | Драйвер хранилища |
---|---|
OverlayFS | оверлей или оверлей2 |
AUFS | AUFS |
Btrfs | brtfs |
Диспетчер устройств | Диспетчер устройств |
VFS | VFS |
ZFS | ZFS |
Давайте теперь обсудим некоторые случаи, когда вы будете использовать различные драйверы хранилища —
AUFS
-
Это стабильный драйвер; может быть использован для готовых приложений.
-
Он имеет хорошее использование памяти и обеспечивает бесперебойную работу Docker для контейнеров.
-
Существует высокая активность записи, связанная с этим драйвером, который следует учитывать.
-
Это хорошо для систем, которые имеют Платформу как тип обслуживания.
Это стабильный драйвер; может быть использован для готовых приложений.
Он имеет хорошее использование памяти и обеспечивает бесперебойную работу Docker для контейнеров.
Существует высокая активность записи, связанная с этим драйвером, который следует учитывать.
Это хорошо для систем, которые имеют Платформу как тип обслуживания.
Devicemapper
-
Это стабильный драйвер; обеспечивает беспроблемное взаимодействие с докером.
-
Этот драйвер хорош для тестирования приложений в лаборатории.
-
Этот драйвер соответствует основным функциональным возможностям ядра Linux.
Это стабильный драйвер; обеспечивает беспроблемное взаимодействие с докером.
Этот драйвер хорош для тестирования приложений в лаборатории.
Этот драйвер соответствует основным функциональным возможностям ядра Linux.
Btrfs
-
Этот драйвер соответствует основным функциональным возможностям ядра Linux.
-
Существует высокая активность записи, связанная с этим драйвером, который следует учитывать.
-
Этот драйвер подходит для случаев, когда вы поддерживаете несколько пулов сборки.
Этот драйвер соответствует основным функциональным возможностям ядра Linux.
Существует высокая активность записи, связанная с этим драйвером, который следует учитывать.
Этот драйвер подходит для случаев, когда вы поддерживаете несколько пулов сборки.
Ovelay
-
Это стабильный драйвер, который соответствует основным функциям ядра Linux.
-
У него хорошее использование памяти.
-
Этот драйвер хорош для тестирования приложений в лаборатории.
Это стабильный драйвер, который соответствует основным функциям ядра Linux.
У него хорошее использование памяти.
Этот драйвер хорош для тестирования приложений в лаборатории.
ZFS
-
Это стабильный драйвер, и он хорош для тестирования приложений в лаборатории.
-
Это хорошо для систем, работающих по типу «платформа как услуга».
Это стабильный драйвер, и он хорош для тестирования приложений в лаборатории.
Это хорошо для систем, работающих по типу «платформа как услуга».
Чтобы увидеть используемый драйвер хранилища, введите команду docker info .
Синтаксис
docker info
Опции
Никто
Возвращаемое значение
Команда предоставит всю относительную информацию о компоненте Docker, установленном на Docker Host.
пример
sudo docker info
Выход
Следующий вывод показывает, что основным драйвером является драйвер aufs и что корневой каталог хранится в / var / lib / docker / aufs .
Объемы данных
В Docker у вас есть отдельный том, который можно использовать в разных контейнерах. Они известны как объемы данных . Некоторые особенности объема данных —
- Они инициализируются при создании контейнера.
- Они могут быть общими, а также повторно использованы во многих контейнерах.
- Любые изменения самого тома могут быть сделаны напрямую.
- Они существуют даже после удаления контейнера.
Давайте посмотрим на наш контейнер Дженкинс. Давайте сделаем проверку докера, чтобы увидеть детали этого изображения. Мы можем выполнить следующую команду, чтобы записать вывод команды docker inspect в текстовый файл, а затем просмотреть файл соответствующим образом.
sudo docker inspect Jenkins > tmp.txt
Когда вы просматриваете текстовый файл с помощью команды more , вы увидите запись как 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 Host после запуска вашего контейнера, вы увидите все файлы контейнера, присутствующие там.
Изменение драйвера хранилища для контейнера
Если вы хотите перейти на драйвер хранилища, используемый для контейнера, вы можете сделать это при запуске контейнера. Это можно сделать с помощью параметра –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
Затем выполните проверку докера для контейнера и поместите вывод в текстовый файл с помощью команды.
sudo docker inspect 9bffb1bfebee > temp.txt
Если вы просмотрите текстовый файл и перейдете к строке с надписью VolumeDriver , вы увидите, что имя драйвера было изменено.
Создание тома
Том можно создать заранее с помощью команды docker . Давайте узнаем больше об этой команде.
Синтаксис
docker volume create –-name=volumename –-opt options
Опции
-
name — это имя тома, который нужно создать.
-
opt — это опции, которые вы можете предоставить при создании тома.
name — это имя тома, который нужно создать.
opt — это опции, которые вы можете предоставить при создании тома.
Возвращаемое значение
Команда выведет имя созданного тома.
пример
sudo docker volume create –-name = demo –opt o = size = 100m
В приведенной выше команде мы создаем том размером 100 МБ с именем demo.
Выход
Вывод вышеуказанной команды показан ниже —
Перечисление всех томов
Вы также можете перечислить все тома докеров на хосте докеров . Более подробная информация об этой команде приведена ниже —
Синтаксис
docker volume ls
Опции
Никто
Возвращаемое значение
Команда выведет все тома на хост докера .
пример
sudo docker volume ls
Выход
Вывод вышеуказанной команды показан ниже —
Докер — Сеть
Docker заботится о сетевых аспектах, чтобы контейнеры могли взаимодействовать с другими контейнерами, а также с Docker Host. Если вы выполните ifconfig на Docker Host, вы увидите Docker Ethernet адаптер. Этот адаптер создается, когда Docker установлен на Docker Host.
Это мост между Docker Host и Linux Host. Теперь давайте посмотрим на некоторые команды, связанные с сетью в Docker.
Список всех сетей Docker
Эта команда может быть использована для вывода списка всех сетей, связанных с Docker на хосте.
Синтаксис
docker network ls
Опции
Никто
Возвращаемое значение
Команда выведет все сети на Docker Host.
пример
sudo docker network ls
Выход
Вывод вышеуказанной команды показан ниже
Проверка сети Docker
Если вы хотите увидеть более подробную информацию о сети, связанной с Docker, вы можете использовать команду Docker network inspect .
Синтаксис
docker network inspect 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 — это имя, используемое для сетевого драйвера.
-
имя — это имя, данное сети.
drivername — это имя, используемое для сетевого драйвера.
имя — это имя, данное сети.
Возвращаемое значение
Команда выведет длинный идентификатор для новой сети.
пример
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
Docker — Настройка Node.js
Node.js — это инфраструктура JavaScript, которая используется для разработки серверных приложений. Это платформа с открытым исходным кодом, разработанная для работы в различных операционных системах. Поскольку Node.js является популярной средой разработки, Docker также обеспечил поддержку приложений Node.js.
Теперь мы увидим различные шаги для запуска и запуска контейнера Docker для Node.js.
Шаг 1 — Первый шаг — извлечь изображение из Docker Hub. Когда вы войдете в Docker Hub, вы сможете найти и увидеть изображение для Node.js, как показано ниже. Просто введите Node в поле поиска и нажмите на ссылку узла (официальную), которая появляется в результатах поиска.
Шаг 2 — Вы увидите, что команда Docker Pull для узла в деталях хранилища в Docker Hub.
Шаг 3. На Docker Host используйте команду Docker pull, как показано выше, чтобы загрузить последний образ узла из Docker Hub.
Как только извлечение завершено, мы можем перейти к следующему шагу.
Шаг 4 — На Docker Host, давайте воспользуемся редактором vim и создадим один файл примера Node.js. В этом файле мы добавим простую команду для отображения «HelloWorld» в командной строке.
В файле Node.js добавим следующий оператор:
Console.log(‘Hello World’);
Это выведет фразу «Hello World», когда мы запустим ее через Node.js.
Убедитесь, что вы сохранили файл, а затем перейдите к следующему шагу.
Шаг 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 Host.
-
Опция –w используется для указания рабочего каталога, используемого Node.js.
-
Первый параметр узла используется для указания запуска образа узла.
-
Второй параметр узла используется для упоминания запуска команды узла в контейнере узла.
-
И, наконец, мы упоминаем название нашего сценария.
Параметр –rm используется для удаления контейнера после его запуска.
Мы даем имя контейнеру под названием «HelloWorld».
Мы упоминаем о том, чтобы отобразить том в контейнере, который является / usr / src / app, в наш текущий текущий рабочий каталог. Это сделано для того, чтобы контейнер узла взял наш скрипт HelloWorld.js, который присутствует в нашем рабочем каталоге на Docker Host.
Опция –w используется для указания рабочего каталога, используемого Node.js.
Первый параметр узла используется для указания запуска образа узла.
Второй параметр узла используется для упоминания запуска команды узла в контейнере узла.
И, наконец, мы упоминаем название нашего сценария.
Затем мы получим следующий вывод. И из результатов мы можем ясно видеть, что контейнер Node работал как контейнер и выполнял скрипт HelloWorld.js.
Докер — Настройка MongoDB
MongoDB — известная документно-ориентированная база данных, используемая многими современными веб-приложениями. Поскольку MongoDB является популярной базой данных для разработки, Docker также обеспечил поддержку MongoDB.
Теперь мы увидим различные шаги для запуска и запуска контейнера Docker для MongoDB.
Шаг 1 — Первый шаг — извлечь изображение из Docker Hub. Когда вы войдете в Docker Hub, вы сможете искать и видеть изображение для Mongo, как показано ниже. Просто введите Mongo в поле поиска и нажмите на официальную ссылку Mongo, которая появляется в результатах поиска.
Шаг 2 — Вы увидите, что Docker вытягивает команду для Mongo в деталях хранилища в Docker Hub.
Шаг 3 — На Docker Host используйте команду Docker pull, как показано выше, чтобы загрузить последний образ Mongo из Docker Hub.
Шаг 4. Теперь, когда у нас есть образ для Mongo, давайте сначала запустим контейнер MongoDB, который будет нашим экземпляром для MongoDB. Для этого мы выдадим следующую команду —
sudo docker run -it -d mongo
О вышеупомянутой команде можно отметить следующие моменты:
-
Опция –it используется для запуска контейнера в интерактивном режиме.
-
Опция –d используется для запуска контейнера как процесса демона.
-
И, наконец, мы создаем контейнер из образа Монго.
Опция –it используется для запуска контейнера в интерактивном режиме.
Опция –d используется для запуска контейнера как процесса демона.
И, наконец, мы создаем контейнер из образа Монго.
Затем вы можете выполнить команду docker ps, чтобы увидеть запущенные контейнеры —
Обратите внимание на следующие моменты —
-
Название контейнера: tender_poitras . Это имя будет другим, так как имя контейнеров будет меняться, когда вы раскручиваете контейнер. Но просто запишите контейнер, который вы запустили.
-
Затем также обратите внимание на номер порта, на котором он работает. Он прослушивает порт TCP 27017.
Название контейнера: tender_poitras . Это имя будет другим, так как имя контейнеров будет меняться, когда вы раскручиваете контейнер. Но просто запишите контейнер, который вы запустили.
Затем также обратите внимание на номер порта, на котором он работает. Он прослушивает порт TCP 27017.
Шаг 5 — Теперь давайте раскрутим еще один контейнер, который будет действовать как наш клиент, который будет использоваться для подключения к базе данных MongoDB. Давайте выполним следующую команду для этого —
sudo docker run –it –link=tender_poitras:mongo mongo /bin/bash
О вышеупомянутой команде можно отметить следующие моменты:
-
Опция –it используется для запуска контейнера в интерактивном режиме.
-
Теперь мы связываем наш новый контейнер с уже запущенным контейнером сервера MongoDB. Здесь нужно указать имя уже запущенного контейнера.
-
Затем мы указываем, что хотим запустить контейнер Mongo в качестве нашего клиента, а затем запустить оболочку bin / bash в нашем новом контейнере.
Опция –it используется для запуска контейнера в интерактивном режиме.
Теперь мы связываем наш новый контейнер с уже запущенным контейнером сервера MongoDB. Здесь нужно указать имя уже запущенного контейнера.
Затем мы указываем, что хотим запустить контейнер Mongo в качестве нашего клиента, а затем запустить оболочку bin / bash в нашем новом контейнере.
Теперь вы будете в новом контейнере.
Шаг 6 — Запустите команду env в новом контейнере, чтобы увидеть подробную информацию о том, как подключиться к контейнеру сервера MongoDB.
Шаг 6 — Теперь пришло время подключиться к серверу MongoDB из клиентского контейнера. Мы можем сделать это с помощью следующей команды —
mongo 172.17.0.2:27017
Следующие пункты должны быть отмечены о вышеупомянутой команде
-
Команда mongo — это команда client mongo, которая используется для подключения к базе данных MongoDB.
-
IP и номер порта — это то, что вы получаете, когда используете команду env .
Команда mongo — это команда client mongo, которая используется для подключения к базе данных MongoDB.
IP и номер порта — это то, что вы получаете, когда используете команду env .
После запуска команды вы будете подключены к базе данных MongoDB.
Затем вы можете запустить любую команду MongoDB в командной строке. В нашем примере мы запускаем следующую команду —
use demo
Эта команда является командой MongoDB, которая используется для переключения на демонстрацию имени базы данных. Если база данных недоступна, она будет создана.
Теперь вы успешно создали контейнер MongoDB клиента и сервера.
Докер — Настройка NGINX
NGINX — это популярное облегченное веб-приложение, которое используется для разработки серверных приложений. Это веб-сервер с открытым исходным кодом, разработанный для работы в различных операционных системах. Поскольку nginx является популярным веб-сервером для разработки, Docker обеспечил поддержку nginx .
Теперь мы увидим различные шаги по запуску контейнера Docker для nginx .
Шаг 1 — Первый шаг — извлечь изображение из Docker Hub. Когда вы войдете в Docker Hub, вы сможете искать и видеть изображение для nginx, как показано ниже. Просто введите nginx в поле поиска и нажмите на ссылку nginx (официальную), которая появляется в результатах поиска.
Шаг 2 — Вы увидите, что команда Docker pull для nginx в деталях хранилища в Docker Hub.
Шаг 3 — На Docker Host используйте команду Docker pull, как показано выше, чтобы загрузить последний образ nginx из Docker Hub.
Шаг 4 — Теперь давайте запустим контейнер nginx с помощью следующей команды.
sudo docker run –p 8080:80 –d nginx
Мы выставляем порт на сервере nginx, который является портом 80, на порт 8080 на Docker Host.
После запуска команды вы получите следующий вывод, если перейдете по URL-адресу http: // dockerhost: 8080 . Это показывает, что контейнер nginx запущен и работает.
Шаг 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 Host.
-
Затем мы присоединяем том к контейнеру, который является / usr / share / nginx / html, к нашему текущему рабочему каталогу. Здесь хранится наш файл HelloWorld.html.
Мы выставляем порт на сервере nginx, который является портом 80, на порт 8080 на Docker Host.
Затем мы присоединяем том к контейнеру, который является / usr / share / nginx / html, к нашему текущему рабочему каталогу. Здесь хранится наш файл HelloWorld.html.
Теперь, если мы перейдем по URL-адресу http: // dockerhost: 8080 / HelloWorld.html, мы получим следующий результат, как и ожидалось:
Докер — Панель инструментов
Во вводных главах мы увидели установку панели инструментов Docker в 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 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 с помощью следующей команды запуска —
docker run –it ubuntu /bin/bash
Вы заметите, что команда такая же, как и в Linux.
Kitematic
Это GUI-эквивалент Docker в Windows. Чтобы открыть этот графический интерфейс, перейдите на панель задач и на значке Docker щелкните правой кнопкой мыши и выберите, чтобы открыть Kitematic.
Он предложит вам скачать графический интерфейс Kitematic. После загрузки просто распакуйте содержимое. Там будет файл с именем Kitematic.exe . Дважды щелкните этот исполняемый файл, чтобы открыть интерфейс графического интерфейса.
Затем вам будет предложено войти в Docker Hub, войти через GUI. Просто введите имя пользователя и пароль, а затем нажмите кнопку «Вход».
После входа в систему вы сможете увидеть все изображения, загруженные в систему, в левой части интерфейса.
Справа вы найдете все изображения, доступные на Docker Hub.
Давайте рассмотрим пример, чтобы понять, как загрузить образ Node из Docker Hub с помощью Kitematic.
Шаг 1 — Введите ключевое слово узла в критериях поиска.
Шаг 2 — Нажмите кнопку « Создать» на официальном изображении узла. Затем вы увидите загружаемое изображение.
Как только изображение будет загружено, оно начнет запускать контейнер Node.
Шаг 3 — Если вы перейдете на вкладку настроек , вы можете перейти к дополнительным параметрам настроек, как показано ниже.
-
Общие настройки — на этой вкладке вы можете указать имя контейнера, изменить параметры пути и удалить контейнер.
Общие настройки — на этой вкладке вы можете указать имя контейнера, изменить параметры пути и удалить контейнер.
-
Порты — Здесь вы можете увидеть различные сопоставления портов. Если вы хотите, вы можете создать свои собственные сопоставления портов.
Порты — Здесь вы можете увидеть различные сопоставления портов. Если вы хотите, вы можете создать свои собственные сопоставления портов.
-
Объемы — Здесь вы можете увидеть различные отображения объема.
Объемы — Здесь вы можете увидеть различные отображения объема.
-
Дополнительно — содержит расширенные настройки для контейнера.
Дополнительно — содержит расширенные настройки для контейнера.
Докер — Настройка ASP.Net
ASP.Net — это стандартная среда веб-разработки, предоставляемая Microsoft для разработки серверных приложений. Поскольку ASP.Net находился в разработке достаточно давно, Docker обеспечил поддержку ASP.Net.
В этой главе мы рассмотрим различные этапы настройки и запуска контейнера Docker для ASP.Net.
Предпосылки
Следующие шаги необходимо выполнить в первую очередь для запуска ASP.Net.
Шаг 1. Поскольку это может выполняться только в системах Windows, сначала необходимо убедиться, что у вас установлена Windows 10 или Window Server 2016.
Шаг 2 — Затем убедитесь, что Hyper-V установлен и контейнеры установлены в системе Windows. Чтобы установить Hyper-V и контейнеры, вы можете включить или отключить функции Windows. Затем убедитесь, что опция Hyper-V и контейнеры отмечены, и нажмите кнопку OK.
Система может потребовать перезагрузки после этой операции.
Шаг 3 — Далее вам нужно использовать следующую команду Powershell для установки версии Docker 1.13.0rc4 . Следующая команда загрузит это и сохранит это во временном местоположении.
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
Шаг 4 — Затем вам нужно развернуть архив с помощью следующей команды powershell .
Expand-Archive -Path "$env:TEMP\docker-1.13.0-rc4.zip" -DestinationPath $env:ProgramFiles
Шаг 5. Затем необходимо добавить файлы Docker в переменную среды с помощью следующей команды powershell .
$env:path += ";$env:ProgramFiles\Docker"
Шаг 6 — Затем вам нужно зарегистрировать Docker Daemon Service, используя следующую команду powershell .
dockerd --register-service
Шаг 7 — Наконец, вы можете запустить демон docker, используя следующую команду.
Start-Service Docker
Используйте команду docker version в powershell, чтобы убедиться, что демон docker работает
Установка контейнера ASP.Net
Давайте посмотрим, как установить контейнер ASP.Net.
Шаг 1 — Первый шаг — извлечь изображение из Docker Hub. Когда вы войдете в Docker Hub, вы сможете выполнить поиск и увидеть образ Microsoft / aspnet, как показано ниже. Просто введите asp в поле поиска и нажмите на ссылку Microsoft / aspnet, которая появляется в результатах поиска.
Шаг 2 — Вы увидите, что Docker вытягивает команду для ASP.Net в деталях хранилища в Docker Hub.
Шаг 3 — Перейдите в Docker Host и выполните команду Docker pull для образа microsoft / aspnet. Обратите внимание, что изображение довольно большое, где-то близко к 4,2 ГБ.
Шаг 4 — Теперь перейдите по следующему адресу https://github.com/Microsoft/aspnet-docker и загрузите весь репозиторий Git.
Шаг 5 — Создайте папку с именем App на вашем диске C. Затем скопируйте содержимое из папки 4.6.2 / sample на ваш диск C. Перейдите в Docker File в каталоге с примерами и введите следующую команду:
docker build –t aspnet-site-new –build-arg site_root=/
Следующие пункты должны быть отмечены о вышеупомянутой команде —
- Он создает новый образ под названием aspnet-site-new из файла Docker.
- Корневой путь установлен к папке localpath.
Шаг 6 — Теперь пришло время запустить контейнер. Это можно сделать с помощью следующей команды —
docker run –d –p 8000:80 –name my-running-site-new aspnet-site-new
Шаг 7. Теперь IIS будет запущен в контейнере Docker. Чтобы найти IP-адрес контейнера Docker, вы можете выполнить команду Docker inspect, как показано ниже.
Докер — Облако
Docker Cloud — это сервис, предоставляемый Docker, в котором вы можете выполнять следующие операции:
-
Узлы — вы можете подключить Docker Cloud к вашим существующим облачным провайдерам, таким как Azure и AWS, чтобы ускорить работу контейнеров в этих средах.
-
Облачный репозиторий — предоставляет место, где вы можете хранить свои собственные репозитории.
-
Непрерывная интеграция — соединитесь с Github и создайте конвейер непрерывной интеграции.
-
Развертывание приложений — развертывание и масштабирование инфраструктуры и контейнеров.
-
Непрерывное развертывание — может автоматизировать развертывание.
Узлы — вы можете подключить Docker Cloud к вашим существующим облачным провайдерам, таким как Azure и AWS, чтобы ускорить работу контейнеров в этих средах.
Облачный репозиторий — предоставляет место, где вы можете хранить свои собственные репозитории.
Непрерывная интеграция — соединитесь с Github и создайте конвейер непрерывной интеграции.
Развертывание приложений — развертывание и масштабирование инфраструктуры и контейнеров.
Непрерывное развертывание — может автоматизировать развертывание.
Начиная
Вы можете перейти по следующей ссылке для начала работы с Docker Cloud — https://cloud.docker.com/
После входа в систему вам будет предоставлен следующий базовый интерфейс —
Подключение к облачному провайдеру
Первым шагом является подключение к существующему облачному провайдеру. Следующие шаги покажут вам, как связаться с провайдером Amazon Cloud.
Шаг 1. Первый шаг — убедиться, что у вас есть нужные ключи AWS. Это можно взять с консоли aws . Войдите в свою учетную запись aws, используя следующую ссылку — https://aws.amazon.com/console/
Шаг 2 — После входа перейдите в раздел «Учетные данные безопасности». Запишите ключи доступа, которые будут использоваться в Docker Hub.
Шаг 3 — Затем вам нужно создать политику в aws , которая позволит Docker просматривать экземпляры EC2. Перейти в раздел профилей в AWS . Нажмите кнопку « Создать политику» .
Шаг 4 — Нажмите «Создать собственную политику» и дайте название политики в виде dockercloudpolicy и определение политики, как показано ниже.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:*", "iam:ListInstanceProfiles" ], "Effect": "Allow", "Resource": "*" } ] }
Далее нажмите кнопку « Создать политику»
Шаг 5. Далее необходимо создать роль, которая будет использоваться Docker для раскрутки узлов в AWS. Для этого перейдите в раздел « Роли » в AWS и выберите параметр « Создать новую роль» .
Шаг 6 — Дайте название роли как dockercloud-role .
Шаг 7. На следующем экране перейдите к разделу «Роль для перекрестного доступа к учетной записи» и выберите «Предоставить доступ между своей учетной записью и учетной записью AWS третьей стороны».
Шаг 8 — На следующем экране введите следующие данные —
- В поле Идентификатор учетной записи введите идентификатор для службы Docker Cloud: 689684103426.
- В поле Внешний идентификатор введите свое имя пользователя в Docker Cloud.
Шаг 9 — Затем нажмите кнопку « Следующий шаг» и на следующем экране присоедините политику, созданную на предыдущем шаге.
Шаг 10 — Наконец, на последнем экране, когда создается роль, обязательно скопируйте созданную роль arn .
arn:aws:iam::085363624145:role/dockercloud-role
Шаг 11. Вернитесь в Docker Cloud , выберите « Поставщики облаков» и щелкните значок подключаемого модуля рядом с Amazon Web Services.
Введите роль Арн и нажмите кнопку Сохранить .
После сохранения интеграция с AWS будет завершена.
Настройка узлов
Как только интеграция с AWS будет завершена, следующим шагом будет настройка узла. Перейдите в раздел «Узлы» в Docker Cloud. Обратите внимание, что при настройке узлов сначала будет автоматически настроен кластер узлов.
Шаг 1 — Перейдите в раздел «Узлы» в Docker Cloud.
Шаг 2. Далее вы можете указать подробности узлов, которые будут настроены в AWS.
Затем вы можете щелкнуть кластер Launch Node, который будет отображаться в нижней части экрана. Как только узел развернут, вы получите уведомление на экране Node Cluster.
Развертывание Сервиса
Следующим шагом после развертывания узла является развертывание службы. Для этого нам необходимо выполнить следующие шаги.
Шаг 1. Перейдите в раздел «Услуги» в Docker Cloud. Нажмите кнопку Создать
Шаг 2 — Выберите услугу, которая требуется. В нашем случае давайте выберем монго .
Шаг 3 — На следующем экране выберите опцию Create & Deploy . Это начнет развертывание контейнера Mongo на вашем кластере узлов.
После развертывания вы сможете увидеть контейнер в рабочем состоянии.
Докер — логирование
В Docker имеются механизмы ведения журналов, которые можно использовать для устранения проблем по мере их возникновения. Существует логирование на уровне демона и на уровне контейнера . Давайте посмотрим на разные уровни ведения журнала.
Loging Daemon
На уровне ведения журнала демона доступно четыре уровня ведения журнала.
-
Debug — детализирует всю возможную информацию, обрабатываемую процессом демона.
-
Информация — в ней подробно описываются все ошибки + информация, обрабатываемая процессом демона.
-
Ошибки — в нем подробно описываются все ошибки, обработанные процессом демона.
-
Неустранимый — он только детализирует все неустранимые ошибки, обработанные процессом демона.
Debug — детализирует всю возможную информацию, обрабатываемую процессом демона.
Информация — в ней подробно описываются все ошибки + информация, обрабатываемая процессом демона.
Ошибки — в нем подробно описываются все ошибки, обработанные процессом демона.
Неустранимый — он только детализирует все неустранимые ошибки, обработанные процессом демона.
Выполните следующие шаги, чтобы узнать, как включить ведение журнала.
Шаг 1 — Во-первых, нам нужно остановить процесс демона docker , если он уже запущен. Это можно сделать с помощью следующей команды —
sudo service docker stop
Шаг 2 — Теперь нам нужно запустить процесс демона docker . Но на этот раз нам нужно добавить параметр –l, чтобы указать опцию регистрации. Итак, давайте запустим следующую команду при запуске процесса демона docker .
sudo dockerd –l debug &
Следующие пункты должны быть отмечены о вышеупомянутой команде —
-
dockerd — это исполняемый файл для процесса демона docker .
-
Параметр –l используется для указания уровня ведения журнала. В нашем случае мы ставим это как отладочную
-
& используется для возврата в командную строку после включения ведения журнала.
dockerd — это исполняемый файл для процесса демона docker .
Параметр –l используется для указания уровня ведения журнала. В нашем случае мы ставим это как отладочную
& используется для возврата в командную строку после включения ведения журнала.
После запуска процесса Docker с ведением журналов вы также увидите журналы отладки , отправленные на консоль.
Теперь, если вы выполните какую-либо команду Docker, такую как образы Docker, информация об отладке также будет отправлена на консоль.
Регистрация контейнеров
Ведение журнала также доступно на уровне контейнера. Итак, в нашем примере давайте сначала раскрутим контейнер Ubuntu. Мы можем сделать это с помощью следующей команды.
sudo docker run –it ubuntu /bin/bash
Теперь мы можем использовать команду docker log для просмотра журналов контейнера.
Синтаксис
Docker logs containerID
параметры
-
containerID — это идентификатор контейнера, для которого вам нужно просмотреть журналы.
containerID — это идентификатор контейнера, для которого вам нужно просмотреть журналы.
пример
На нашем хосте Docker давайте выполним следующую команду. Перед этим вы можете выполнить некоторые команды, находясь в контейнере.
sudo docker logs 6bfb1271fcdd
Выход
Из результатов видно, что команды, выполняемые в контейнере, отображаются в журналах.
Докер — составь
Docker Compose используется для запуска нескольких контейнеров как одного сервиса. Например, предположим, что у вас есть приложение, которое требует NGNIX и MySQL, вы можете создать один файл, который будет запускать оба контейнера как службу без необходимости запускать каждый из них по отдельности.
В этой главе мы увидим, как начать работу с Docker Compose. Затем мы рассмотрим, как получить простой сервис с MySQL и NGNIX и запустить его с помощью Docker Compose.
Docker Compose ─ Установка
Чтобы запустить Docker Compose, необходимо выполнить следующие шаги.
Шаг 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 / .
Шаг 2 — Далее нам нужно предоставить права на выполнение загруженному файлу Docker Compose, используя следующую команду —
chmod +x /home/demo/docker-compose
Затем мы можем использовать следующую команду, чтобы увидеть составную версию.
Синтаксис
docker-compose version
параметры
-
версия — это используется, чтобы указать, что мы хотим узнать подробности о версии Docker Compose .
версия — это используется, чтобы указать, что мы хотим узнать подробности о версии Docker Compose .
Выход
Будет отображена информация о версии Docker Compose.
пример
В следующем примере показано, как получить версию docker-compose .
sudo ./docker-compose -version
Выход
Затем вы получите следующий вывод —
Создание вашего первого Docker-Compose File
Теперь давайте продолжим и создадим наш первый файл Docker Compose. Все файлы Docker Compose являются файлами YAML. Вы можете создать его с помощью редактора vim. Поэтому выполните следующую команду, чтобы создать файл compose —
sudo vim docker-compose.yml
Давайте внимательно рассмотрим различные детали этого файла —
-
База данных и веб- ключевое слово используются для определения двух отдельных сервисов. Один будет работать с нашей базой данных mysql, а другой будет нашим веб-сервером nginx .
-
Ключевое слово image используется для указания изображения из dockerhub для наших контейнеров mysql и nginx
-
Для базы данных мы используем ключевое слово ports, чтобы указать порты, которые должны быть выставлены для mysql .
-
И затем, мы также указываем переменные окружения для mysql, которые необходимы для запуска mysql .
База данных и веб- ключевое слово используются для определения двух отдельных сервисов. Один будет работать с нашей базой данных mysql, а другой будет нашим веб-сервером nginx .
Ключевое слово image используется для указания изображения из dockerhub для наших контейнеров mysql и nginx
Для базы данных мы используем ключевое слово ports, чтобы указать порты, которые должны быть выставлены для mysql .
И затем, мы также указываем переменные окружения для mysql, которые необходимы для запуска mysql .
Теперь давайте запустим наш файл Docker Compose, используя следующую команду —
sudo ./docker-compose up
Эта команда возьмет файл docker-compose.yml в ваш локальный каталог и начнет сборку контейнеров.
После запуска все изображения начнут загружаться, и контейнеры начнутся автоматически.
И когда вы делаете docker ps , вы можете видеть, что контейнеры действительно работают.
Докер — Непрерывная интеграция
В Docker интегрированы многие инструменты Continuous Integrations, в которые также входит популярный инструмент CI, известный как Jenkins . В Jenkins у вас есть плагины, которые можно использовать для работы с контейнерами. Итак, давайте быстро рассмотрим плагин Docker, доступный для инструмента Jenkins.
Давайте пойдем шаг за шагом и посмотрим, что доступно в Jenkins для контейнеров Docker.
Шаг 1 — Перейдите на панель инструментов Jenkins и нажмите Manage Jenkins .
Шаг 2 — Перейти к управлению плагинами .
Шаг 3 — Поиск плагинов Docker. Выберите плагин Docker и нажмите кнопку « Установить без перезагрузки» .
Шаг 4 — После завершения установки перейдите к своей работе на панели управления Jenkins. В нашем примере у нас есть работа под названием Demo .
Шаг 5 — В задании, когда вы переходите к шагу сборки, теперь вы можете видеть опцию запуска и остановки контейнеров.
Шаг 6 — В качестве простого примера вы можете выбрать дополнительную опцию, чтобы остановить контейнеры, когда сборка будет завершена. Затем нажмите кнопку Сохранить .
Теперь просто работай в Дженкинс. В выходных данных консоли вы сможете увидеть, что команда Stop All Containers выполнена.
Докер — Архитектура Кубернетес
Kubernetes — это структура оркестровки для контейнеров Docker, которая помогает представить контейнеры как сервисы для внешнего мира. Например, у вас может быть две службы: одна будет содержать nginx и mongoDB , а другая — nginx и redis . Каждая служба может иметь IP-адрес или точку обслуживания, к которой могут подключаться другие приложения. Kubernetes затем используется для управления этими услугами.
На следующей диаграмме в упрощенном формате показано, как Kubernetes работает с точки зрения архитектуры.
Миньон — это узел, на котором работают все сервисы. Вы можете иметь много миньонов, бегущих в один момент времени. Каждый миньон будет принимать один или несколько POD. Каждый POD похож на хостинг сервиса. Каждый POD содержит контейнеры Docker. Каждый POD может содержать различный набор Docker-контейнеров. Затем прокси-сервер используется для контроля доступа этих служб к внешнему миру.
Kubernetes имеет несколько компонентов в своей архитектуре. Роль каждого компонента объясняется ниже & mius;
-
etcd — этот компонент является хранилищем значений ключа высокой доступности, которое используется для хранения общей конфигурации и обнаружения служб . Здесь различные приложения смогут подключаться к сервисам через сервис обнаружения .
-
Фланель — это внутренняя сеть, которая требуется для контейнеров.
-
kube-apiserver — это API, который можно использовать для организации контейнеров Docker.
-
kube-controller-manager — используется для управления сервисами Kubernetes .
-
kube-scheduler — используется для планирования контейнеров на хостах.
-
Kubelet — используется для управления запуском контейнеров через файлы манифеста .
-
kube-proxy — используется для предоставления сетевых прокси-сервисов внешнему миру.
etcd — этот компонент является хранилищем значений ключа высокой доступности, которое используется для хранения общей конфигурации и обнаружения служб . Здесь различные приложения смогут подключаться к сервисам через сервис обнаружения .
Фланель — это внутренняя сеть, которая требуется для контейнеров.
kube-apiserver — это API, который можно использовать для организации контейнеров Docker.
kube-controller-manager — используется для управления сервисами Kubernetes .
kube-scheduler — используется для планирования контейнеров на хостах.
Kubelet — используется для управления запуском контейнеров через файлы манифеста .
kube-proxy — используется для предоставления сетевых прокси-сервисов внешнему миру.
Докер — Рабочая Кубернетес
В этой главе мы увидим, как установить Kubenetes через kubeadm . Это инструмент, который помогает в установке Kubernetes. Давайте пойдем шаг за шагом и узнаем, как установить Kubernetes.
Шаг 1 — Убедитесь, что версия сервера Ubuntu, с которой вы работаете, — 16.04 .
Шаг 2 — Убедитесь, что вы сгенерировали ключ ssh, который можно использовать для входа по ssh . Вы можете сделать это с помощью следующей команды.
ssh-keygen
Это сгенерирует ключ в вашей домашней папке, как показано ниже.
Шаг 3 — Далее, в зависимости от версии Ubuntu, вам нужно будет добавить соответствующий сайт в список docker.list для менеджера пакетов apt , чтобы он мог обнаружить пакеты Kubernetes с сайта 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
Шаг 4 — Затем мы выпускаем обновление apt-get, чтобы убедиться, что все пакеты загружены на сервер Ubuntu.
Шаг 5 — Установите пакет Docker, как описано в предыдущих главах.
Шаг 6 — Теперь пришло время установить kubernetes , установив следующие пакеты:
apt-get install –y kubelet kubeadm kubectl kubernetes-cni
Шаг 7 — Как только все пакеты kubernetes загружены, пришло время запустить контроллер kubernetes, используя следующую команду —
kubeadm init
После этого вы получите успешное сообщение о том, что мастер запущен и работает, и теперь узлы могут присоединиться к кластеру.