美文网首页
docker create network

docker create network

作者: 晨曦_zdq | 来源:发表于2020-10-21 17:14 被阅读0次

一、简介

Docker有以下网络类型:

bridge:多由于独立container之间的通信
host: 直接使用宿主机的网络,端口也使用宿主机的
overlay:当有多个docker主机时,跨主机的container通信
macvlan:每个container都有一个虚拟的MAC地址
none: 禁用网络

默认网络

Docker在默认情况下,分别会建立一个bridge、一个host和一个none的网络:

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
557d70cd18ab        bridge              bridge              local
27015fb1d01c        host                host                local
d7bdd36df894        none                null                local

可以看到,driver类型为bridge的网络的名字也为bridge。在默认情况下,container都是使用的这个bridge的网络,此时container是可以访问外网和其他container的(需要通过IP地址)。

默认的名为bridge的网络是有很多限制的,为此,我们可以自行创建bridge类型的网络。默认的bridge网络与自建bridge网络有以下区别:

端口不会自行发布,必须使用-p参数才能为外界访问,而使用自建的bridge网络时,container的端口可直接被相同网络下的其他container访问。

container之间的如果需要通过名字访问,需要--link参数,而如果使用自建的bridge网络,container之间可以通过名字互访。

更多区别请参考这里。

查看网络详情

docker network inspect bridge
自建bridge网络

当有多个独立的container之间需要彼此访问时,推荐使用自建bridge网络,而不是--link。

# 创建bridge网络
[root@vue ~]# docker network create --driver bridge my-network

创建两个通过network bridge 通讯的容器
[root@vue ~]# docker run -dit --name emqttd1 --network my-network local/emqttd:v1
24ab86a617d83ed44ce8080d65917300810b5ac4d092b4a4d456e5f59df5d6d8
[root@vue ~]# docker run -itd --name emqttd2 --network my-network local/emqttd:v1
b5f980d7ffaf8bba8ca1f5e4f23e970eb20d9921783ef71f7cfa7ce6311c75a2

[root@vue ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b5f980d7ffaf        local/emqttd:v1     "/bin/sh -c '/usr/lo…"   3 seconds ago       Up 2 seconds        18083/tcp           emqttd2
24ab86a617d8        local/emqttd:v1     "/bin/sh -c '/usr/lo…"   37 seconds ago      Up 36 seconds       18083/tcp           emqttd1

#  容器内ping容器name
[root@vue ~]# docker exec emqttd1 ping emqttd2
PING emqttd2 (172.19.0.3) 56(84) bytes of data.
64 bytes from emqttd2.my-network (172.19.0.3): icmp_seq=1 ttl=64 time=0.147 ms
64 bytes from emqttd2.my-network (172.19.0.3): icmp_seq=2 ttl=64 time=0.104 ms
64 bytes from emqttd2.my-network (172.19.0.3): icmp_seq=3 ttl=64 time=0.090 ms
^C
[root@vue ~]# docker exec emqttd2 ping emqttd1
PING emqttd1 (172.19.0.2) 56(84) bytes of data.
64 bytes from emqttd1.my-network (172.19.0.2): icmp_seq=1 ttl=64 time=0.082 ms
64 bytes from emqttd1.my-network (172.19.0.2): icmp_seq=2 ttl=64 time=0.090 ms
64 bytes from emqttd1.my-network (172.19.0.2): icmp_seq=3 ttl=64 time=0.102 ms
使用自建的bridge网络指定容器的ip
# 创建network,指定网段
[root@vue ~]# docker network create --driver bridge --subnet=172.21.0.0/16 my-network01

[root@vue ~]# docker run -itd --name test01 --network my-network1 --ip 172.21.0.20 local/emqttd:v1

二、docker network命令详解

docker network --help 回车能显示所有相关命令提示

[root@]# docker network --help
 
Usage:  docker network COMMAND
 
Manage networks
 
Options:
      --help   Print usage
 
Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks
 
Run 'docker network COMMAND --help' for more information on a command.

docker network command --help 查看具体命令的详细参数和用法

[root@]# docker network connect --help
 
Usage:  docker network connect [OPTIONS] NETWORK CONTAINER
 
Connect a container to a network
 
Options:
      --alias stringSlice           Add network-scoped alias for the container
      --help                        Print usage
      --ip string                   IP Address
      --ip6 string                  IPv6 Address
      --link list                   Add link to another container (default [])
      --link-local-ip stringSlice   Add a link-local address for the container

创建网络

[root@izwz9fnxall7j07rfgkvwqz seafile]# docker network create --help
 
Usage:  docker network create [OPTIONS] NETWORK
 
Create a network
 
Options:
      --attachable             Enable manual container attachment # 允许手动附加到容器
      --aux-address map        Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
  -d, --driver string          Driver to manage the Network (default "bridge")
      --gateway stringSlice    IPv4 or IPv6 Gateway for the master subnet
      --help                   Print usage
      --internal               Restrict external access to the network
      --ip-range stringSlice   Allocate container ip from a sub-range
      --ipam-driver string     IP Address Management Driver (default "default")
      --ipam-opt map           Set IPAM driver specific options (default map[])
      --ipv6                   Enable IPv6 networking
      --label list             Set metadata on a network (default [])
  -o, --opt map                Set driver specific options (default map[])
      --subnet stringSlice     Subnet in CIDR format that represents a 
segment

比如 docker network create lzwj 网络默认采用桥接网络
docker network ls
[root@seafile]# docker network ls
NETWORK ID NAME DRIVER SCOPE
62180a9e2a6f bridge bridge local
d80fef8de8ba host host local
6a5ad5bc599c lzwj bridge local

三、官方地址

https://docs.docker.com/engine/reference/commandline/network_create/

四、实践搭建

在实践开发中经常使用macvlan与bridge模式,他俩的区别如下:

macvlan模式可以将各个容器的ip地址设置为与宿主机同一个网段的地址,这样每个容器就是独立的ip,其他宿主机或其他宿主机里的容器都可以通过ip进行互访,但是宿主机不能同该宿主机里的容器进行访问。

bridge模式可以将各个容器的端口设为对立的,这样外部宿主机或者容器需要通过该容器所在ip+该容器的端口进行访问,并且本宿主机可以访问本宿主机中的容器。

总结:macvlan模式通过独立的ip进行区分访问,bridge模式通过独立的端口进行区分访问。

1、macvlan搭建方法

https://jingyan.baidu.com/article/84b4f565bbe6aa60f7da3270.html

对该模式所使用命令进行解释一下:

docker network create -d macvlan --subnet=192.168.200.0/24 --gateway=192.168.200.1 -o parent=eno1 companynetwork
--subnet=192.168.200.0/24命令指定该网络模式网段范围,其中24代表该网段前24位相同,后8位不同,即该网段范围为:192.168.200.1~192.168.200.254,若该命令改为--subnet=192.168.200.0.16,即该网段范围为:192.168.0.1-192.168.255.254,这个范围就变的很大了。

2、bridge搭建方法:

https://www.cnblogs.com/xuezhigu/p/8257129.html

相关文章

网友评论

      本文标题:docker create network

      本文链接:https://www.haomeiwen.com/subject/axpmnhtx.html