Docker创建自定义网桥

新建网络模型

1.新建

[root@docker1 ~]# docker  network  create  --subnet=172.30.0.0/16 docker01
c9cf26f911ef2dccb1fd1f670a6c51491e72b49133246f6428dd732c44109462
[root@docker1 ~]# docker  network  list
NETWORK ID          NAME                DRIVER              SCOPE
bc189673f959        bridge              bridge              local               
6622752788ea        docker01             bridge             local               
53bf43bdd584        host                host                local                
ac52d3151ba8        none                null                local                
[root@docker1 ~]# ip  a   s
[root@docker1 ~]# docker  network   inspect   docker01
[
    {
        "Name": "docker01",
        "Id": "c9cf26f911ef2dccb1fd1f670a6c51491e72b49133246f6428dd732c44109462",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.30.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

2.使用自定义网桥启动容器

[root@docker1 ~]# docker  run  --network=docker01   -id   nginx

3.端口映射

[root@docker1 ~]# docker  run  -p  8080:80  -id  nginx
e523b386f9d6194e53d0a5b6b8f5ab4984d062896bab10639e41aef657cb2a53
[root@docker1 ~]# curl 192.168.1.10:8080

 

新建一个网络模型,并使得ifconfig能显示名称

1.新建一个网络模型docker2

[root@docker1 ~]# docker  network   create   --driver  bridge  docker02   
//新建一个 名为docker02的网络模型
5496835bd3f53ac220ce3d8be71ce6afc919674711ab3f94e6263b9492c7d2cc
[root@docker1 ~]# ifconfig     
//但是在用ifconfig命令查看的时候,显示的名字并不是docker02,而是br-5496835bd3f5
br-5496835bd3f5: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.18.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 02:42:89:6a:a2:72  txqueuelen 0  (Ethernet)
        RX packets 8  bytes 496 (496.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 496 (496.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@docker1 ~]# docker  network  list            //查看显示docker02(查看加粗字样)
NETWORK ID          NAME                DRIVER              SCOPE
bc189673f959        bridge              bridge              local               
5496835bd3f5        docker02             bridge             local               
53bf43bdd584        host                host                local               
ac52d3151ba8        none                null                local

2.若要解决使用ifconfig命令可以看到docker02的问题,可以执行以下几步命令

[root@docker1 ~]# docker network list   //查看docker0的NETWORK ID(加粗字样)
NETWORK ID          NAME                DRIVER              SCOPE
bc189673f959        bridge              bridge              local               
5496835bd3f5        docker02             bridge             local               
53bf43bdd584        host                host                local               
ac52d3151ba8        none                null                local               

3.查看bridge的信息,确认能在ifconfig中显示网桥名称的选项,com.docker.network.bridge.name

[root@docker2 ~]# docker network inspect bc189673f959 
....
 "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },

....

4.重新创建docker02网桥

[root@docker1 ~]# docker network rm docker02     //删除docker02
docker02
[root@docker1 ~]# docker network create  \ 
docker02  -o com.docker.network.bridge.name=docker02   
//创建docker02网桥
648bd5da03606d5a1a395c098662b5f820b9400c6878e2582a7ce754c8c05a3a
[root@docker1 ~]# ifconfig     //ifconfig查看有docker02
docker02: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.18.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 02:42:94:27:a0:43  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

创建网桥时自定义网段

root@docker1 ~]# docker network create docker03 --subnet=172.30.0.0/16 -o com.docker.network.bridge.name=docker03
f003aa1c0fa20c81e4f73c12dcc79262f1f1d67589d7440175ea01dc0be4d03c
[root@docker1 ~]# ifconfig    //ifconfig查看,显示的是自己定义的网段
docker03: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.30.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 02:42:27:9b:95:b3  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

posted @ 2019-05-10 17:03  落魄山陈平安  阅读(6304)  评论(0编辑  收藏  举报