Перейти к содержимому
GitHub

Docker

Alt-C или Команда → Docker выводит контейнеры на активной панели, сгруппированные по проектам Compose; контейнеры вне проектов идут в конце. Другая панель показывает выбранный контейнер: состояние, порты, сети, точки монтирования, команду и политику перезапуска, а также текущую загрузку процессора, памяти, сети и диска с графиком за последнюю минуту. Для проекта показываются его папка, контейнеры и их суммарное потребление. Esc закрывает это представление и сохраняет фильтр до следующего раза.

Загрузка процессора показана дважды. Сейчас % означает последнее измерение, а Средн. % даёт среднее за последние несколько секунд, как в мониторе процессов, поэтому это число не скачет, когда контейнер работает рывками. Если список слишком узок для обоих столбцов, в нём остаётся только Средн. %. В подробностях та же пара называется CPU сейчас и CPU средн., а для проекта оба числа складываются по его работающим контейнерам.

Клавиша Действие
↑ ↓, PgUp, PgDn, Home, End Перемещение
← → / Enter Свернуть или развернуть проект; Enter на контейнере переходит к его подробностям
S / X / R Запустить / остановить / перезапустить контейнер или контейнеры проекта
P Приостановить или возобновить
F Просмотреть файлы контейнера
E, Alt-2 Открыть оболочку в контейнере или вернуться к уже открытой
Alt-1 Снова показать обзор контейнера, в том числе из его оболочки
D Показать место на диске или вернуться к контейнерам
/ Фильтр по имени, сервису, образу или проекту
Alt-O Открыть папку файла Compose рядом со списком
Tab Переключиться между списком и подробностями
Alt-W Развернуть панель в фокусе

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

Alt-O открывает на другой панели папку файла Compose, которым запущен контейнер или проект, и ставит курсор на этот файл, а если Compose не называет файла, открывает папку проекта. Список остаётся как был, как и в мониторе процессов (см. Активность и память). У контейнера, запущенного не через Compose, нет папки на этом компьютере, поэтому Alt-O сообщает об этом, а его файлы открывает F.

F на работающем контейнере закрывает представление Docker и показывает на этой панели файловую систему контейнера, начиная с его рабочего каталога. В заголовке панели указано имя контейнера. Другая панель остаётся в папке хоста, поэтому F5 копирует в обе стороны, а F3 просматривает, F7 создаёт папку и F8 удаляет внутри контейнера. Поиск, размеры, предпросмотр и правка работают только на хосте. Alt-C возвращает к представлению Docker, а .. в корне контейнера возвращает панель в папку хоста, которая была на ней раньше. Для просмотра в контейнере нужен sh, поэтому содержимое минимальных образов без оболочки вывести нельзя.

Пока панель показывает файлы контейнера, командная строка следует за ней: она становится оболочкой этого контейнера, запущенной в папке панели, а в начале приглашения стоит имя контейнера. Команды выполняются внутри контейнера, панель обновляется по их завершении, а cd перемещает панель. Ctrl-O показывает консоль этого контейнера с пометкой ▣ имя консоль. На панели хоста командная строка и Ctrl-O снова принадлежат хосту, и всё, что вы там набрали, сохраняется. Это та же оболочка, что и на вкладке «Оболочка» контейнера в представлении Docker.

Чтобы командная строка всегда оставалась на хосте, снимите флажок Следовать в «Параметры → Плагины». Тогда, пока панель показывает файлы контейнера, командная строка затемнена и помечена ⌂ хост, а Enter ничего не делает, пока не станет активной панель хоста. Так команда никогда не выполнится на чужой машине.

E открывает оболочку в контейнере (bash, если он есть в образе, иначе sh) на вкладке «Оболочка» панели подробностей и передаёт ей нажатия клавиш, включая функциональные. Alt-1 показывает обзор, Alt-C возвращает к списку, а колесо мыши прокручивает вывод оболочки назад. Оболочка продолжает работать, пока вы смотрите другие контейнеры, закрываете представление Docker или работаете в консоли хоста; её контейнер помечен в списке значком ›_ и учитывается в подсказке Alt-C на панели клавиш. Оболочка закрывается, когда вы из неё выходите, когда контейнер останавливается или когда Borg завершает работу (если открыты оболочки, Borg сначала спрашивает).

Плагин использует утилиту docker и её текущий контекст, поэтому одинаково работает с Docker Desktop, OrbStack, Colima и удалёнными движками. Отключить его можно в «Параметры → Плагины».

D в представлении Docker или F9 → Docker → Место на диске показывает вместо списка контейнеров, что Docker хранит на диске, по строке на каждый вид: Кэш сборки, Образы без имени, Неиспользуемые образы, Используемые образы, Остановленные контейнеры, Неиспользуемые анонимные тома, Неиспользуемые именованные тома, Используемые тома и Неиспользуемые сети. В каждой строке есть количество, размер и объём, который освободит удаление, а верхняя строка складывает всё, что можно освободить. Borg измеряет это командой docker system df --verbose в фоне, и на загруженном движке это может занять время. R измеряет заново, и Borg делает то же сам, когда после ввода команды клавишей F8 завершается следующая команда в приглашении.

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

→ или Enter разворачивает вид в список его элементов от большего к меньшему, а ← снова сворачивает. Другая панель показывает выбранный элемент: у образа теги, ID, размер общих слоёв, время создания и число контейнеров; у записи кэша сборки тип, общая ли она, используется ли и когда её в последний раз использовала сборка; у контейнера образ и состояние; у тома сведения, о которых рассказывают следующие абзацы. Размеры, которые Docker не смог измерить, показаны как ?, а / фильтрует все виды сразу. Тома фильтр находит также по проекту Compose и по контейнерам и образам, которые их используют.

Строки томов заполняют свободное место в столбце «Имя» столбцами Последний раз, Создан, Проект и Используют, сколько поместится, а Alt-W разворачивает панель, чтобы показать все. «Проект» означает проект Compose, который создал том. «Используют» перечисляет контейнеры, которые монтируют том, запущенные или остановленные. Анонимные тома показаны по первым 12 символам ID.

Последний раз показывает используется, пока работает контейнер, который монтирует том. Иначе там стоит день, когда остановился последний из этих контейнеров, и Docker записывает его точно. Когда контейнеры удалены, Docker больше не хранит никаких сведений об использовании тома. Если Borg читает файлы тома напрямую, он смотрит и на время их последнего изменения, и более позднее изменение показано этим днём со знаком ~ впереди. Этот день лишь оценка: чтение файла не оставляет следов, поэтому том мог использоваться и позже. Пустая ячейка значит, что Borg не знает ни того, ни другого.

Другая панель показывает полное время последнего использования и создания, проект Compose с именем тома в нём и Драйвер, если том использует драйвер, отличный от local, или у него есть параметры. Каждый контейнер, который монтирует том, занимает строку со своим состоянием и путём, по которому смонтирован том. У анонимного тома эти контейнеры перечислены в строке Создан для вместе с их образами. Удалённый контейнер Docker забывает. Папка и Содержит показывают, где файлы лежат на этой машине и что находится в корне тома.

Enter на томе показывает его файлы в панели только для чтения. Заголовок панели помечен знаком ▥ и словами только чтение, а пути начинаются от корня тома. F3 открывает файлы для просмотра, а F5 копирует файлы в другую панель. Borg отказывается от всего, что изменило бы том: правки, перемещения, удаления, создания папок, упаковки и копирования в него. .. в корне тома возвращает панель в папку, которую она показывала раньше, а командная строка всё это время остаётся в той папке. Сеанс, сохранённый, пока панель показывает том, в следующий раз откроет ту папку.

Borg читает файлы тома напрямую, когда они лежат на этой машине. С OrbStack на macOS они находятся в общей папке OrbStack в ~/OrbStack/docker/volumes, которую macOS считает сетевым томом: разрешите приложению терминала доступ к «Сетевым томам» в «Системные настройки › Конфиденциальность и безопасность › Файлы и папки». В Linux Borg читает папку тома, когда движок работает на той же машине и Borg может её открыть, например с Docker в режиме rootless или когда Borg запущен от root. Поиск и размеры тогда работают как в любой папке.

В остальных случаях, например с Docker Desktop, удалённым контекстом или Docker в Linux, когда его папки читает только root, Borg показывает файлы через вспомогательный контейнер. Он запускает образ busybox, закреплённый за одной сборкой, без сети, с файловой системой только для чтения и без прав, кроме чтения файлов, и монтирует том только для чтения. В первый раз Borg спрашивает, прежде чем Docker скачает образ размером около 2 МБ, который потом остаётся на движке под именем borg-commander/volume-helper. Пока панель не откроется, нижняя строка показывает Загрузка busybox… или Запуск вспомогательного контейнера…. Borg удаляет вспомогательный контейнер, когда панель уходит из тома или Borg завершает работу, а забытый контейнер сам останавливается через сутки. Поиск и размеры там работают только на хосте, как в файлах контейнера, а «Место на диске» не считает вспомогательный контейнер среди тех, что используют том.

Когда измерение закончено, Borg в фоне читает тома, доступные ему напрямую, от большего к меньшему, а нижняя строка, пока чтение идёт, показывает Чтение файлов томов…. R перечитывает их при новом измерении.

F8 вводит команду очистки для выбранной строки в приглашении оболочки хоста и показывает консоль. Ничего не выполняется, пока вы не нажмёте Enter, поэтому команду можно сначала прочитать, изменить или стереть клавишами Ctrl-U. На строке вида F8 вводит его prune, например docker image prune -a для неиспользуемых образов или docker volume prune для неиспользуемых анонимных томов, и Docker запрашивает подтверждение, прежде чем что-либо удалить. На элементе F8 вводит docker rmi, docker rm или docker volume rm с этим элементом или со всеми отмеченными образами, контейнерами или томами. Space или Insert отмечает элемент, а * инвертирует отметки выбранного вида. Образ удаляется по всем его тегам, потому что Docker удаляет образ вместе с последним тегом, а если тегов нет, то по ID. Записи кэша сборки удаляются только все вместе командой docker builder prune. Borg никогда не добавляет -f или --force. Для имени с управляющим символом команда не вводится: приглашение оболочки приняло бы этот символ за нажатие клавиши.

В томах хранятся данные, которые сохранили контейнеры, например файлы базы данных, и удалённый том восстановить нельзя. Другая панель напоминает об этом рядом с каждой командой для томов. Если у утилиты docker больше одного контекста, команды указывают тот, с которым измерял Borg, например docker --context staging image prune, чтобы попасть в тот же движок, какой бы контекст ни выбрала оболочка. Они всегда идут в оболочку хоста, даже когда панель показывает файлы контейнера, потому что представление Docker оставляет командную строку на хосте.

Руководство описывает ветку main · Borg 0.11.0 · 1f6bce6
В последнем выпуске может быть не всё, что здесь описано. Список изменений

Перевод с английского. Будем рады исправлениям. Команды и сочетания клавиш не переводятся.