Вступление
изображение: 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.