Управление контейнерной сетью#

Вывод списка контейнерных сетей#

В Podman существует два режима работы сети - с административными полномочиями и без административных полномочий. Сеть без административных полномочий настраивается автоматически, у контейнера отсутствует IP-адрес. В сети с административными полномочиями IP-адрес присутствует.

Выведите список всех сетей от имени пользователя с административными полномочиями:

podman network ls

Пример вывода команды:

NETWORK ID    NAME        VERSION     PLUGINS
2f259bab93aa  podman      0.4.0       bridge,portmap,firewall,tuning

По умолчанию Podman предлагает сетевой мост. Списки сетей для пользователя без административных полномочий и пользователя с административными полномочиями совпадают.

Проверка сети#

Выведите IP-адреса, включенные плагины, тип сети и т.д. для указанной сети в виде списка с помощью команды podman network ls.

Раскройте информацию о сети по умолчанию podman с помощью команды:

podman network inspect podman

Пример вывода команды:

[
    {
        "cniVersion": "0.4.0",
        "name": "podman",
        "plugins": [
            {
                "bridge": "cni-podman0",
                "hairpinMode": true,
                "ipMasq": true,
                "ipam": {
                    "ranges": [
                        [
                            {
                                "gateway": "hh.hh.hh.hh",
                                "subnet": "hh.hh.hh.hh/16"
                            }
                        ]
                    ],
                    "routes": [
                        {
                            "dst": "0.0.0.0/0"
                        }
                    ],
                    "type": "host-local"
                },
                "isGateway": true,
                "type": "bridge"
            },
            {
                "capabilities": {
                    "portMappings": true
                },
                "type": "portmap"
            },
            {
                "type": "firewall"
            },
            {
                "type": "tuning"
            }
        ]
    }
]

В данном списке представлена информация о диапазоне IP-адресов, включенных плагинах, типе сети и о других сетевых настройках.

Создание сети#

Используйте команду podman network create для создания новой сети.

Примечание

По умолчанию Podman создает внешнюю сеть. Для создания внутренней сети используйте команду podman network create --internal. Контейнеры во внутренней сети могут взаимодействовать с другими контейнерами на хосте, но не могут подключаться к сети за его пределами и не доступны вне его.

Создайте внешнюю сеть с именем newnet:

podman network create newnet

Проверка#

Выведите список всех сетей:

podman network ls

Пример вывода команды:

NETWORK ID    NAME        VERSION     PLUGINS
2f259bab93aa  podman      0.4.0       bridge,portmap,firewall,tuning
11c844f95e28  newnet      0.4.0       bridge,portmap,firewall,tuning,dnsname

В выводе отразилась сеть по умолчанию podman и созданная сеть newnet.

Примечание

Начиная с Podman версии 4.0, при создании новой внешней сети с помощью команды podman network create плагин DNS включен по умолчанию.

Подключение контейнера к сети#

Используйте команду podman network connect для подключения контейнера к сети.

Для подключения контейнера mycontainer к сети с именем newnet введите:

podman network connect newnet mycontainer

Для проверки подключения mycontainer к сети newnet используйте команду:

podman inspect --format='{{.NetworkSettings.Networks}}' mycontainer

Пример вывода команды:

map[podman:0xc00042ab40 newnet:0xc00042ac60]

В выводе отражено, что контейнер подключен к сетям newnet и podman.

Отключение контейнера от сети#

Используйте команду podman network disconnect, чтобы отключить контейнер от сети.

Для отключения контейнера mycontainer от сети с именем newnet введите:

podman network disconnect newnet mycontainer

Для проверки отключения mycontainer от сети newnet используйте команду:

podman inspect --format='{{.NetworkSettings.Networks}}' mycontainer

Пример вывода команды:

map[podman:0xc000537440]

В выводе отражено, что у контейнера нет подключения к сети newnet но по умолчанию сохраняется подключение к сети podman.

Удаление сети#

Используйте команду podman network rm для удаления определенной сети:

  1. Раскройте список всех сетей:

    podman network ls
    

    Пример вывода команды:

    NETWORK ID    NAME        VERSION     PLUGINS
    2f259bab93aa  podman      0.4.0       bridge,portmap,firewall,tuning
    11c844f95e28  newnet      0.4.0       bridge,portmap,firewall,tuning,dnsname
    
  2. Удалите сеть newnet:

    podman network rm newnet
    

Примечание

Если удаляемая сеть имеет связанные с ней контейнеры, необходимо использовать команду podman network rm -f для удаления контейнеров и pods.

Проверка#

Проверьте удаление сети newnet:

podman network ls

Пример вывода команды:

NETWORK ID    NAME        VERSION     PLUGINS
2f259bab93aa  podman      0.4.0       bridge,portmap,firewall,tuning

Удаление всех неиспользуемых сетей#

Используйте команду podman network prune для удаления всех неиспользуемых сетей, к которым не подключены контейнеры. Команда podman network prune не удаляет сеть podman.

Для удаления всех неиспользуемых сетей введите команду:

podman network prune

Пример вывода команды:

WARNING! This will remove all networks not used by at least one container.
Are you sure you want to continue? [y/N] y

Чтобы проверить, все ли сети удалены, введите команду:

podman network ls

Пример вывода команды:

NETWORK ID    NAME        VERSION     PLUGINS
2f259bab93aa  podman      0.4.0       bridge,portmap,firewall,tuning