Введение
В этом практическом занятии (лабораторной работе) вы научитесь эффективно использовать команду docker network ls для перечисления и фильтрации Docker-сетей. Сначала вы перечислите все доступные сети, а затем узнаете, как отображать полные идентификаторы сетей с помощью опции --no-trunc.
Кроме того, вы научитесь фильтровать сети по различным критериям, таким как драйвер, имя, область действия и тип. Наконец, вы узнаете, как форматировать вывод команды docker network ls с использованием шаблона для настраиваемого отображения. В результате этого практического занятия вы получите необходимые навыки для управления и проверки Docker-сетей с помощью командной строки.
Вывести список всех Docker-сетей
На этом этапе вы научитесь перечислять все Docker-сети, доступные в вашей системе. Docker-сети являются важной частью для взаимодействия контейнеров между собой и с внешним миром. По умолчанию Docker создает три сети: bridge, host и none.
Для перечисления всех Docker-сетей используйте команду docker network ls. Эта команда выводит список сетей, включая их идентификатор (ID), имя, драйвер и область действия.
Выполним команду, чтобы увидеть доступные сети.
docker network ls
Вы должны увидеть вывод, похожий на следующий:
NETWORK ID NAME DRIVER SCOPE
b432a7b0f123 bridge bridge local
f567c8d1e234 host host local
a987b6c5d4e3 none null local
В выводе показаны сети по умолчанию. NETWORK ID - это уникальный идентификатор сети. NAME - это имя сети. DRIVER - это драйвер сети, используемый сетью (например, bridge, host, null). SCOPE указывает, где сеть доступна (например, local).
Вывести список сетей без усечения идентификатора
На предыдущем этапе вы перечислили Docker-сети и заметили, что NETWORK ID отображается усеченным. Это поведение по умолчанию, которое позволяет сократить объем выводимой информации. Однако иногда вам может потребоваться полный идентификатор сети, например, когда вы ссылаетесь на определенную сеть в других Docker-командах.
Для отображения полного идентификатора сети можно использовать опцию --no-trunc с командой docker network ls.
Попробуем выполнить эту команду, чтобы увидеть полные идентификаторы сетей.
docker network ls --no-trunc
Теперь в выводе будут показаны полные идентификаторы сетей:
NETWORK ID NAME DRIVER SCOPE
b432a7b0f1234567890abcdef1234567890abcdef1234567890abcdef12345678 bridge bridge local
f567c8d1e234567890abcdef1234567890abcdef1234567890abcdef12345678 host host local
a987b6c5d4e3210fedcba9876543210fedcba9876543210fedcba9876543210fed none null local
Как вы можете видеть, в столбце NETWORK ID теперь отображаются полные, неусеченные идентификаторы. Это полезно, когда вам нужно скопировать и вставить полный идентификатор для дальнейших операций.
Фильтрация сетей по драйверу
На этом этапе вы научитесь фильтровать список Docker-сетей на основе их драйвера. Это полезно, когда вы хотите видеть только те сети, которые используют определенный драйвер, например bridge или host.
Вы можете использовать опцию --filter с командой docker network ls для фильтрации вывода. Синтаксис фильтра имеет вид ключ=значение. Чтобы отфильтровать по драйверу, вы используете ключ driver.
Отфильтруем сети так, чтобы показать только те, которые используют драйвер bridge.
docker network ls --filter driver=bridge
Теперь в выводе будут показаны только сети с драйвером bridge:
NETWORK ID NAME DRIVER SCOPE
b432a7b0f123 bridge bridge local
Теперь отфильтруем сети так, чтобы показать только те, которые используют драйвер host.
docker network ls --filter driver=host
Теперь в выводе будут показаны только сети с драйвером host:
NETWORK ID NAME DRIVER SCOPE
f567c8d1e234 host host local
Вы можете использовать эту возможность фильтрации для быстрого поиска сетей на основе их базовой технологии.
Фильтрация сетей по имени
На этом этапе вы научитесь фильтровать список Docker-сетей на основе их имени. Это полезно, когда вы ищете определенную сеть по ее имени.
Подобно фильтрации по драйверу, вы используете опцию --filter с командой docker network ls. Чтобы отфильтровать по имени, вы используете ключ name.
Отфильтруем сети так, чтобы показать только сеть с именем bridge.
docker network ls --filter name=bridge
Теперь в выводе будет показана только сеть с именем bridge:
NETWORK ID NAME DRIVER SCOPE
b432a7b0f123 bridge bridge local
Теперь отфильтруем сети так, чтобы показать только сеть с именем host.
docker network ls --filter name=host
Теперь в выводе будет показана только сеть с именем host:
NETWORK ID NAME DRIVER SCOPE
f567c8d1e234 host host local
Вы можете использовать этот фильтр для быстрого поиска сети, если вы знаете ее имя.
Фильтрация сетей по области действия и типу
На этом этапе вы научитесь фильтровать список Docker-сетей на основе их области действия (scope) и типа. scope указывает, где сеть доступна (например, local или swarm), а type относится к драйверу сети. Хотя type часто совпадает с driver, можно также использовать type в качестве ключа фильтра.
Вы можете использовать опцию --filter с командой docker network ls для фильтрации вывода. Чтобы отфильтровать по области действия, используйте ключ scope. Чтобы отфильтровать по типу, используйте ключ type.
Отфильтруем сети так, чтобы показать только те, у которых область действия local.
docker network ls --filter scope=local
В выводе будут показаны все сети с областью действия local:
NETWORK ID NAME DRIVER SCOPE
b432a7b0f123 bridge bridge local
f567c8d1e234 host host local
a987b6c5d4e3 none null local
Теперь отфильтруем сети так, чтобы показать только те, у которых тип bridge.
docker network ls --filter type=bridge
В выводе будут показаны сети с типом bridge (что в данном случае совпадает с драйвером bridge):
NETWORK ID NAME DRIVER SCOPE
b432a7b0f123 bridge bridge local
Вы можете комбинировать фильтры, используя опцию --filter несколько раз. Например, чтобы отфильтровать сети с областью действия local и драйвером bridge:
docker network ls --filter scope=local --filter driver=bridge
В этом конкретном окружении это даст такой же результат, как и фильтрация по type=bridge, но это демонстрирует, как комбинировать фильтры.
Форматирование вывода сетевых данных с использованием шаблона
На этом этапе вы научитесь форматировать вывод команды docker network ls с помощью шаблона на языке Go. Это мощная возможность, которая позволяет настроить вывод так, чтобы он отображал только нужную вам информацию в определенном формате.
Опция --format позволяет указать шаблон. Шаблон использует синтаксис пакета text/template языка Go. Вы можете обращаться к различным полям объекта сети, таким как .ID, .Name, .Driver и .Scope.
Отформатируем вывод так, чтобы он показывал только имя сети и драйвер, разделенные двоеточием.
docker network ls --format "{{.Name}}: {{.Driver}}"
Теперь вывод будет отформатирован в соответствии с шаблоном:
bridge: bridge
host: host
none: null
Вы также можете добавить заголовки в отформатированный вывод.
docker network ls --format "Network Name\tDriver\n{{.Name}}\t{{.Driver}}"
Теперь вывод будет содержать заголовки:
Network Name Driver
bridge bridge
host host
none null
Символ \t создает табуляцию, а \n — новую строку. Эта возможность форматирования очень полезна для написания скриптов и создания отчетов.
Резюме
В этом практическом занятии вы научились использовать команду docker network ls для вывода списка Docker-сетей. Сначала вы вывели все доступные сети и ознакомились с информацией о стандартных сетях и их основных характеристиках (идентификатор, имя, драйвер, область действия). Затем вы узнали, как отобразить полный идентификатор сети с помощью опции --no-trunc, что полезно при обращении к конкретным сетям.
Кроме того, вы потренировались фильтровать списки сетей по различным критериям. Вы научились фильтровать по драйверу с использованием опции --filter driver=<driver_name>, по имени сети с помощью --filter name=<network_name> и по области действия и типу с использованием --filter scope=<scope> и --filter type=<type>. Наконец, вы узнали, как форматировать вывод команды docker network ls с помощью опции --format и шаблонов на языке Go, что позволяет настраивать отображаемую информацию.



