Вступление
изображение: 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.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Один сервер Ubuntu 16.04, настроенный с использованием Initial Server Setup для Ubuntu 16.04, включая некорневую sudo пользователь и брандмауэр.
-
Docker установлен, как в Как установить и использовать Docker в Ubuntu 16.04.
-
Несколько активных контейнеров Docker объединены в сеть для проверки на сухость.
-
В качестве примера в этом руководстве мы будем использовать настройки WordPress и PHPMyAdmin (без дополнительного шага для корня документа) по адресу https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-and -phpmyadmin-with-docker-compose-on-ubuntu-14-04 [Как установить Wordpress и PhpMyAdmin с помощью Docker Compose в Ubuntu 14.04].
-
Кроме того, вы можете использовать свои собственные существующие настройки контейнера.
-
При желании, Docker Machine на вашем локальном компьютере и настройка Docker, которая использует Docker Swarm. Это необходимо, если вы попробовали функции Swarm Dry на последнем шаге. Вы можете настроить это, следуя https://www.digitalocean.com/community/tutorials/how-to-provision-and-manage-remote-docker-hosts-with-docker-machine-on-ubuntu-16-04 [Как обеспечить и управлять удаленными хостами Docker с помощью Docker Machine в Ubuntu 16.04] и https://www.digitalocean.com/community/tutorials/how-to-create-a-cluster-of-docker-containers-with-docker -swarm-and-digitalocean-on-ubuntu-16-04 [Как создать кластер Docker-контейнеров с помощью Docker Swarm и DigitalOcean в Ubuntu 16.04].
Шаг 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.