Как использовать команду docker network ls для вывода и фильтрации списка сетей

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь эффективно использовать команду docker network ls для перечисления и фильтрации Docker-сетей. Сначала вы перечислите все доступные сети, а затем узнаете, как отображать полные идентификаторы сетей с помощью опции --no-trunc.

Кроме того, вы научитесь фильтровать сети по различным критериям, таким как драйвер, имя, область действия и тип. Наконец, вы узнаете, как форматировать вывод команды docker network ls с использованием шаблона для настраиваемого отображения. В результате этого практического занятия вы получите необходимые навыки для управления и проверки Docker-сетей с помощью командной строки.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555177{{"Как использовать команду docker network ls для вывода и фильтрации списка сетей"}} docker/network -.-> lab-555177{{"Как использовать команду docker network ls для вывода и фильтрации списка сетей"}} end

Перечисление всех 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, что позволяет настраивать отображаемую информацию.