将容器连接到用户定义的网桥

创建新容器时,您可以指定一个或多个**--network**标志此示例将 Nginx 容器连接到my-net网络。它还将容器中的 80 端口发布到 Docker 主机上的 8080 端口,以便外部客户端可以访问该端口。连接到my-net 网络的任何其他容器都可以访问my-nginx容器上的所有端口,反之亦然。

  1. $ docker create --name my-nginx \
  2. --network my-net \
  3. --publish 8080:80 \
  4. nginx:latest

要将**正在运行的**容器连接到现有的用户定义网桥,请使用该 **docker network connect**命令。以下命令将已运行的my-nginx容器连接 到已存在的my-net网络:

  1. $ docker network connect my-net my-nginx

启用从 Docker 容器到外界的转发

默认情况下,来自连接到默认网桥网络的容器的流量 不会转发到外部世界。要启用转发,您需要更改两个设置。这些不是 Docker 命令,它们会影响 Docker 主机的内核。

    1. 配置 Linux 内核以允许 IP 转发。
      1. sysctl net.ipv4.conf.all.forwarding=1
    1. 将策略的iptables FORWARD策略从更改DROP为 ACCEPT。
      1. sudo iptables -P FORWARD ACCEPT

      配置默认网桥网络

      要配置默认bridge网络,请在daemon.json. 这是一个daemon.json指定了多个选项的示例。仅指定您需要自定义的设置。
      1. {
      2. "bip": "192.168.1.5/24",
      3. "fixed-cidr": "192.168.1.5/25",
      4. "fixed-cidr-v6": "2001:db8::/64",
      5. "mtu": 1500,
      6. "default-gateway": "10.20.1.1",
      7. "default-gateway-v6": "2001:db8:abcd::89",
      8. "dns": ["10.20.1.2","10.20.1.3"]
      9. }