获取与Docker网络关联的网桥名称

x33g5p2x  于 2022-11-02  发布在  Docker
关注(0)|答案(2)|浏览(140)

我正在使用“docker network create --d bridge mynet”创建一个docker网络。我想获取与此docker网络关联的网桥名称。
我知道我可以使用“-o”来提供桥接器名称。例如:“docker network create --d bridge -o com.docker.network.bridge.name =mybridge mynet”。此方法将与正常的桥接器驱动程序一起工作,但在我的情况下,我使用的是一个ovs驱动程序,因此我启动网络为“docker network create --d ovs mynet”。如果我在ovs驱动程序的情况下使用“-o”,它将不工作。
请建议我一个方法来获得与网络相关的网桥名称。当我创建网络时,正在创建的新网桥,用它创建的网桥有一个随机名称,我可以用“ifconfig”命令看到它。

bxfogqkk

bxfogqkk1#

网桥名称不是docker network inspect输出的一部分,但它始终是br-<first 12 characters of network id>(除非在使用-o com.docker.network.bridge.name=<bridge name>创建网络时明确指定)。

network_id=$(docker network inspect -f {{.Id}} <network name>)
bridge_name="br-${network_id:0:12}"

另一种选择是依赖于这样的事实,即网桥充当网络的默认网关,因此其IP地址和网络的网关地址相同。

network_gateway=$(docker inspect \
    -f '{{range .IPAM.Config}}{{.Gateway}}{{end}}' <network name>)
bridge_name=$(ifconfig | grep -B1 "inet $network_gateway" | head -1 | cut -d: -f1)
ep6jt1vc

ep6jt1vc2#

感谢@Jarek的回答,下面的docker compose可以创建&使用mybr0

version: "2.1"

services:
  network-only:
    image: tianon/true
    container_name: network-only
    networks:
      - mybr0

networks:
  mybr0:
    name: mybr0
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: mybr0

相关问题