Как управлять и контролировать Docker контейнеры с сухим на Ubuntu 16.04

Вступление

изображение: https: //i.imgur.com/5uQQNAa.gif [сухой мониторинг GIF]

dry - это простое, но обширное терминальное приложение, созданное для взаимодействия с https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction- Контейнеры to-common-components [Docker] и их изображения. Использование dry удаляет повторы, возникающие при выполнении рутинных Docker Engine команд, а также предоставляет более наглядную альтернативу родному интерфейсу командной строки Docker.

У dry есть возможность быстрого запуска и остановки контейнеров, безопасного или принудительного удаления удаленных образов Docker, постоянного мониторинга процессов контейнеров в реальном времени и доступа к выводам + info +, + inspect +, + history + и ` + log + `команды.

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

В этом уроке мы установим «сухой» и рассмотрим некоторые из его наиболее полезных функций:

  • Взаимодействие с контейнерами Docker, изображениями и сетями,

  • Мониторинг контейнеров Docker и

  • По желанию, взаимодействие с узлами и сервисами Docker Swarm.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

Шаг 1 - Установка сухой

Во-первых, нам нужно установить «сухой» на сервере Docker. Последняя версия сухих двоичных файлов доступна на странице выпуска GitHub dry.

Загрузите последнюю версию бинарного файла + dry-linux-amd64 +, который является + v0.9-beta.3 + во время публикации.

wget https://github.com/moncho/dry/releases/download//dry-linux-amd64

Затем переместите и переименуйте новый двоичный файл из + dry-linux-amd64 + в + / usr / local / bin / dry +.

sudo mv dry-linux-amd64 /usr/local/bin/dry

+ / usr / local / bin + - это стандартное расположение, используемое для хранения двоичных файлов для программ, локальных для сервера. Перемещение «сухого» двоичного файла в этот каталог также дает нам возможность вызывать «сухой» двоичный файл из командной строки из любого места на сервере, поскольку этот каталог включен в https://www.digitalocean.com/community/tutorials/how-to- read-and-set-environment-and-shell-variable-on-a-linux-vps [+ $ PATH + переменная окружения].

Измените двоичные разрешения с помощью + chmod, чтобы позволить вам выполнить его.

sudo chmod 755 /usr/local/bin/dry

Вы можете проверить, что + dry + теперь доступен и работает правильно, запустив программу с опцией + -v +.

dry -v

Это вернет номер версии и детали сборки:

Version Details Outputdry version 0.9-beta.2, build d4d7a789

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

Шаг 2 - Взаимодействие с Docker-контейнерами

Беги всухую, чтобы открыть панель управления в своем терминале

dry

В верхней части информационной панели находится информация о сервере и программном обеспечении Docker, например, версия Docker, версия API Docker Engine, является ли сервер узлом рабочего / менеджера с поддержкой Docker Swarm, а также именем хоста и ресурсами сервера.

В нижней части панели инструментов находится ссылка для клавиш навигации, которые можно использовать для доступа к различным частям сушилки:

Navigation key options[H]:Help [Q]:Quit | [F1]:Sort [F2]:Toggle Show Containers [F5]:Refresh [%]:Filter |
[m]:Monitor mode [2]:Images [3]:Networks [4]:Nodes [5]:Services | [Enter]:Commands

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

Если вы используете пример стека контейнеров Wordpress, MariaDB и PHPMyAdmin из обязательных руководств, вы увидите эти три вновь составленных контейнера:

изображение: https: //i.imgur.com/Wjd4PWh.png [сухое изображение панели инструментов]

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

Это отобразит некоторую информацию о контейнере в верхней части экрана, такую ​​как его отображение портов, сетевые ссылки и IP-адрес сетевого контейнера:

Wordpress Container Statistics  Container Name:  wordpress_wordpress_1                    ID:       f67f9914b57e       Status:  Up 13 minutes
 Image:           wordpress                                Created:  About an hour ago
 Command:         docker-entrypoint.sh apache2-foreground
 Port mapping:    0.0.0.0:8080->80/tcp
 Network Name:    bridge
 IP Address:     172.17.0.3
 Labels           6

Когда вы выбираете контейнер, в нижней центральной части экрана также будет отображаться новый список доступных для выбора опций:

  • + Fetch logs +, что эквивалентно команде Docker Engine `+docker logs + `. Это полезно для отладки и устранения ошибок в контейнерах.

  • + Kill container in, который можно использовать, если контейнер не отвечает и не так интересен, как следовало бы.

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

  • + Inspect container +, который является эквивалентом `+docker container inspect + `.

  • + Restart +, который останавливает и перезапускает контейнер. гораздо быстрее, чем вводить команды Docker Engine to restart или https://docs.docker.com/engine/reference/commandline/ps/ [запросить статус] контейнера.

  • + Показать историю изображений +, в которой перечислены команды, которые использовались для построения образа контейнера. Эти «слои» создаются в процессе создания образа и являются результатом команд / действий, представленных в https://www.digitalocean.com/community/tutorials/docker-explained-using-dockerfiles-to-automate-building-of- изображения [Dockerfile]. С помощью этой опции мы можем видеть, как именно был сгенерирован контейнер, используя базовый образ Docker.

  • + Stats + Top +, которая включает в себя такую ​​информацию, как использование ЦП, потребление памяти, входящий и исходящий сетевой трафик, работа файловой системы, общие идентификаторы процессов и общее время работы контейнера. Он также включает в себя список процессов, который функционально идентичен выводу `top `.

  • + Stop +, который останавливает контейнер. Вы можете использовать + F2 + для переключения контейнеров в представлении + Containers +, чтобы включить + остановленный в данный момент и активный +, и вы можете перезапустить остановленный контейнер с опцией + Restart + после его выбора.

Нажмите клавишу + ESC, чтобы вернуться в корневой раздел` + Containers` на панели инструментов. Отсюда мы посмотрим на раздел + Images.

Шаг 3 - Взаимодействие с изображениями Docker

В разделе + Containers + нажмите + 2 + для доступа к разделу + Images + объекта dry.

изображение: https: //i.imgur.com/18pFgHi.png [раздел изображений]

Этот раздел обеспечивает более простой доступ к `+docker image inspect + `command. Здесь также есть несколько удобных сочетаний клавиш, которые вы можете увидеть на панели навигации:

  • + CTRL + D + для + Remove Dangling +, «висячие тома» относится к другим томам контейнера, на которые больше не ссылается ни один контейнер, и поэтому они являются избыточными. Обычно в Docker в командной строке эта операция включает команду + docker volume rm + и флаг + dangling = true +, а также целевые тома данных.

  • + CTRL + E + для + Remove +, что эквивалентно `+docker rmi + `, позволяет удалять изображения до тех пор, пока никакие контейнеры, созданные из этого образа, все еще активны и работают.

  • + CTRL + F + для + Force Remove +, которая позволяет принудительно удалить выделенное изображение, как если бы вы использовали + docker rmi --force +.

  • + I + для + History +, который отображает те же данные, что и + Show Image History в разделе` + Container`.

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

Шаг 4 - Взаимодействие с Docker Networks

В разделе + Images + нажмите + 3 + для доступа к разделу + Networks +.

изображение: https: //i.imgur.com/rR874kM.png [Панель мониторинга Docker Networks]

Этот раздел идеально подходит для verifying сетевых ссылок и конфигурации сети контейнеров Docker.

Вы можете delete сеть из Docker с помощью + CTRL + E +, хотя вы не можете удалить предопределенные сети Docker по умолчанию, такие как + bridge + , Однако в качестве примера вы можете попытаться удалить + bridge + в любом случае, выделив его клавишами со стрелками и нажав + ENTER +. Вы увидите длинный фрагмент, подобный следующему:

Output. . .
   "Containers": {
       "34f8295b39b7c3364d9ceafd4e96194f210f22acc41d938761e1340de7010e05": {
           "Name": "wordpress_wordpress_db_1",
           "EndpointID": "68370df8a13b92f3dae2ee72ff769e5bdc00da348ef3e22fa5b8f7e9e979dbd5",
           "MacAddress": "02:42:ac:11:00:02",
           "IPv4Address": "172.17.0.2/16",
           "IPv6Address": ""
       },
       "e7105685e0e6397fd762949e869095aa4451a26cdacdad7f5e177bde52819c4a": {
           "Name": "wordpress_wordpress_1",
           "EndpointID": "44ea3a133d887c5352b8ccf70c94cda9f05891b2db8b99a95096a19d4a504e16",
           "MacAddress": "02:42:ac:11:00:04",
           "IPv4Address": "172.17.0.4/16",
           "IPv6Address": ""
       },
       "e7d65c76b50ff03fc50fc374be1fa4bf462e9454f8d50c89973e1e5693eef559": {
           "Name": "wordpress_phpmyadmin_1",
           "EndpointID": "7fb1b55dd92034cca1dd65fb0c824e87a9ba7bbc0860cd3ed34744390d670b78",
           "MacAddress": "02:42:ac:11:00:03",
           "IPv4Address": "172.17.0.3/16",
           "IPv6Address": ""
       }
   },
. . .

Часть вышеприведенных выходных данных показывает сетевые IP-адреса и MAC-адреса контейнерных ссылок и контейнера + bridge + network. Исходя из этого, вы можете проверить, что все контейнеры являются членами сети + bridge и могут обмениваться данными, что является основным признаком того, что сеть контейнеров действительна.

Используйте + ESC +, чтобы закрыть сетевой вывод. Теперь, когда мы рассмотрели разделы + Containers +, + Images + и + Networks + dry, давайте перейдем к функции мониторинга dry.

Шаг 5 - Мониторинг Docker-контейнеров

Нажмите клавишу + M +, чтобы получить краткий обзор всех ваших работающих контейнеров на текущем сервере / хосте. Доступ к этому экрану можно получить из любого корневого раздела dry, например + Containers +, + Images + и + Networks +.

изображение: https: //i.imgur.com/L7cEJ1L.png [изображение в режиме монитора]

Части этой информации перечислены в других местах программы (например, в параметрах контейнера + Stats + Top +), но это представление обеспечивает центральное расположение для информации обо всех контейнерах, что позволяет отслеживать весь стек. Это полезно при управлении большим количеством контейнеров.

Нажмите + Q +, чтобы выйти из панели управления. Отсюда, мы будем работать с Docker Swarm.

Шаг 6 - Установка Dry на Docker Swarm Cluster Manager (Необязательно)

С вашего локального компьютера введите + docker-machine для SSH в назначенный вами узел менеджера кластера. В обязательном учебном пособии для Docker Swarm это было установлено как + node-1 +.

docker-machine ssh node-1

Чтобы продемонстрировать другой способ установки dry, + curl + официальный скрипт установки и запустите его. Если вы предпочитаете избегать `+ curl …​ | Sh + `шаблон, вы можете установить сухой, как в шаге 1.

curl -sSf https://moncho.github.io/dry/dryup.sh | sh

Сценарий установки автоматически переместит сухой двоичный файл в + / usr / local / bin:

Outputdryup: Moving dry binary to its destination
dryup: dry binary was copied to /usr/local/bin, now you should 'sudo chmod 755 /usr/local/bin/dry'

Обновите разрешения для двоичного файла, как мы делали в Шаге 1.

sudo chmod 755 /usr/local/bin/dry

Теперь попробуйте убежать.

dry

В верхней правой части начального раздела + Containers + теперь заполнены строки состояния + Swarm + и + Node role +, которые были пустыми на предыдущих этапах:

OutputSwarm:      active
Node role:  manager
Nodes:      3

Вы также увидите два контейнера с длинными именами изображений в списке. Три других контейнера распределены среди других рабочих узлов Swarm и были определены примером сервиса + webserver + из предварительного учебного пособия.

Сухая установка менеджера кластера готова, поэтому давайте посмотрим, как далее работает сухая работа с Docker Swarm.

Шаг 7 - Взаимодействие с Docker Swarm Nodes (необязательно)

В разделе + Containers + нажмите + 4 +, чтобы перейти к разделу + Nodes +.

изображение: https: //i.imgur.com/9q4uXRr.png [Раздел узлов информационной панели]

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

Отсюда используйте клавиши со стрелками для выбора + node-2 +, затем нажмите + ENTER. Это подтянет задачи отдельного узла:

изображение: https: //i.imgur.com/lZeJ9pN.png [панель задач 2 узла]

С точки зрения службы + webserver +, + node-2 + содержит первый и второй из пяти сетевых контейнеров. Задачи в этом представлении показывают, что + CURRENT STATE двух контейнеров активна, и перечисляет, как долго они работают. Нумерация имен ваших собственных контейнеров может отличаться. Это зависит от того, какому рабочему узлу выделены контейнеры, что определяется the сервисной командой Docker.

Вернитесь в раздел + Nodes +, нажав + ESC +, чтобы мы могли изучить некоторые сочетания клавиш dry здесь.

Распространенной задачей при использовании Docker Swarm является изменение состояния или доступности определенных узлов. Выделите + node-1 + снова и нажмите + CTRL + A +, чтобы увидеть приглашение + Set Availability +.

OutputChanging node availability, please type one of ('active'|'pause'|'drain')

Наберите + dri + и подтвердите его клавишей + ENTER +.

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

Когда вы отправляете команду + Сток +, сообщение о статусе в левом верхнем углу подтвердит действие:

В появившемся вверху слева сообщении о состоянии вы увидите подтверждение этого действия. Это изменение также отражено в столбце + AVAILABILITY +:

OutputNode  availability is now drain

Вы также заметите изменения, отраженные в столбце «+ AVAILABILITY +».

Чтобы восстановить + node-2 +, выделите его снова и нажмите + CTRL + A +, чтобы вернуть приглашение + Set Availability +. На этот раз введите + active + и нажмите + ENTER.

Вы также увидите подтверждающее сообщение для этого действия:

OutputDocker daemon: update  availability is now active

Опция, которую мы не использовали, + pause +, временно останавливает все процессы в каждом контейнере, найденном в узле, пока они снова не будут установлены как + active +.

На последнем этапе мы будем взаимодействовать с сервисами Docker Swarm в сухом виде.

Шаг 8 - Взаимодействие со службами Docker Swarm (необязательно)

Нажмите «+ 5 », чтобы просмотреть раздел « Services».

изображение: https: //i.imgur.com/c7DMszC.png [раздел служб панели мониторинга]

Обязательное руководство настроило только одну службу + webserver +, которая настроена на репликацию экземпляров (т.е. создавать новые контейнеры) при необходимости до пяти. Это представление подтверждает, что реплики + 5/5 + являются активными, и показывает сопоставление портов, которое использует служба, а также ее распределенные задачи.

Мы можем использовать сухой, чтобы увидеть гораздо больше информации об услуге. Нажмите + ENTER +, когда выделен сервис + webserver +.

изображение: https: //i.imgur.com/Vob3wMS.png [Обзор задач веб-сервера панели мониторинга]

Этот подробный вид службы содержит много информации о состоянии службы и ее Swarm-узлах.

Интересно, что вы можете заметить, что здесь перечислены семь задач, несмотря на то, что для службы установлено пять. Это связано с тем, что Docker Swarm ранее создал две дополнительные задачи реплики из теста на шаге 7, когда мы переключили + node-2 + в режим стока.

Мы также можем использовать «сухой», чтобы увеличить максимальное количество реплик. Нажмите + ESC +, чтобы вернуться в раздел + Services +, затем введите + CTRL + S +, выделяя сервис + webserver +. Это вызовет приглашение масштабирования:

OutputScale service. Number of replicas?

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

Проверьте это подтверждающее сообщение, чтобы подтвердить действие:

OutputDocker daemon: update v6gbc1ms0pi scaled to 8 replicas

Вы можете увидеть + Services + view lists + 8/8 + replicas для сервиса сейчас.

Если вы хотите полностью удалить службу, выделите ее и нажмите + CTRL + R +, чтобы открыть запрос на удаление службы:

OutputAbout to remove the selected service. Do you want to proceed? y/N

Вы можете использовать это, чтобы удалить сервис + webserver +, если он вам больше не нужен или вы хотите его запустить.

Наконец, нажмите + Q +, чтобы выйти из панели управления и выйти из программы.

Заключение

Следуя этому руководству, вы настроили «сухой» на хосте Docker и диспетчере кластеров Docker Swarm. В этом руководстве также были рассмотрены основные функции Dry, такие как взаимодействие с контейнерами Docker, изображениями и сетями, а также с узлами и сервисами Docker Swarm.

Существует вторичный метод сухого подключения к удаленному хосту, на котором запущен Docker, который использует опцию `+ -H + 'с IP-адресом удаленного хоста при работе в сухом состоянии. Это полезно в ситуациях, когда вы не можете или не заинтересованы в установке сухого двоичного файла.

Отсюда, попробуйте применить dry к вашим собственным установкам Docker, чтобы узнать, как он может оптимизировать ваш рабочий процесс. Вы можете ознакомиться с дополнительными сочетаниями клавиш Dry в the GitHub README.

Related