Provided by: docker.io_24.0.7-0ubuntu2~23.10.1_amd64 bug

NAME

       docker-network-create - Create a network

SYNOPSIS

       docker network create [OPTIONS] NETWORK

DESCRIPTION

       Creates a new network. The DRIVER accepts bridge or overlay which are the built-in network
       drivers. If you have installed a third party or your own custom  network  driver  you  can
       specify  that  DRIVER  here  also.  If  you don't specify the --driver option, the command
       automatically creates a bridge network for you.  When you install Docker Engine it creates
       a bridge network automatically. This network corresponds to the docker0 bridge that Engine
       has traditionally relied on.  When  you  launch  a  new  container  with   docker  run  it
       automatically  connects  to  this  bridge  network.  You cannot remove this default bridge
       network, but you can create new ones using the network create command.

       $ docker network create -d bridge my-bridge-network

       Bridge networks are isolated networks on a single Engine  installation.  If  you  want  to
       create  a network that spans multiple Docker hosts each running an Engine, you must enable
       Swarm mode, and create an overlay network. To read more about overlay networks with  Swarm
       mode, see " ⟨https://docs.docker.com/network/overlay/⟩.

       Once you have enabled swarm mode, you can create a swarm-scoped overlay network:

       $ docker network create --scope=swarm --attachable -d overlay my-multihost-network

       By default, swarm-scoped networks do not allow manually started containers to be attached.
       This restriction is added to prevent someone that has access to a non-manager node in  the
       swarm cluster from running a container that is able to access the network stack of a swarm
       service.

       The --attachable option used in the example above disables this  restriction,  and  allows
       for both swarm services and manually started containers to attach to the oerlay network.

       Network  names must be unique. The Docker daemon attempts to identify naming conflicts but
       this is not guaranteed. It is the user's responsibility to avoid name conflicts.

   Overlay network limitations
       You should create overlay networks with /24 blocks (the default), which limits you to  256
       IP  addresses,  when  you  create networks using the default VIP-based endpoint-mode. This
       recommendation        addresses        limitations         with         swarm         mode
       ⟨https://github.com/moby/moby/issues/30820⟩.  If  you  need more than 256 IP addresses, do
       not increase the IP block size. You can either use dnsrr endpoint mode  with  an  external
       load  balancer,  or use multiple smaller overlay networks. See Configure service discovery
       ⟨https://docs.docker.com/engine/swarm/networking/#configure-service-discovery⟩  for   more
       information about different endpoint modes.

Connect containers

       When  you  start  a  container,  use  the --network flag to connect it to a network.  This
       example adds the busybox container to the mynet network:

       $ docker run -itd --network=mynet busybox

       If you want to add a container to a network after the container is  already  running,  use
       the docker network connect subcommand.

       You  can  connect  multiple containers to the same network. Once connected, the containers
       can communicate using only another container's IP address or name.  For  overlay  networks
       or  custom  plugins that support multi-host connectivity, containers connected to the same
       multi-host network but launched from different Engines can also communicate in this way.

       You can disconnect a container from a network using the docker network disconnect command.

   Specify advanced options
       When you create a network, Engine creates a non-overlapping subnetwork for the network  by
       default.  This  subnetwork  is not a subdivision of an existing network.  It is purely for
       ip-addressing purposes. You can  override  this  default  and  specify  subnetwork  values
       directly  using  the  --subnet  option.  On  a bridge network you can only create a single
       subnet:

       $ docker network create --driver=bridge --subnet=192.168.0.0/16 br0

       Additionally, you also specify the --gateway --ip-range and --aux-address options.

       $ docker network create \
         --driver=bridge \
         --subnet=172.28.0.0/16 \
         --ip-range=172.28.5.0/24 \
         --gateway=172.28.5.254 \
         br0

       If you omit the --gateway flag the Engine selects one for  you  from  inside  a  preferred
       pool.  For  overlay networks and for network driver plugins that support it you can create
       multiple subnetworks. This example uses two /25 subnet  mask  to  adhere  to  the  current
       guidance  of  not  having  more  than  256  IPs  in  a single overlay network. Each of the
       subnetworks has 126 usable addresses.

       $ docker network create -d overlay \
         --subnet=192.168.10.0/25 \
         --subnet=192.168.20.0/25 \
         --gateway=192.168.10.100 \
         --gateway=192.168.20.100 \
         --aux-address="my-router=192.168.10.5" --aux-address="my-switch=192.168.10.6" \
         --aux-address="my-printer=192.168.20.5" --aux-address="my-nas=192.168.20.6" \
         my-multihost-network

       Be sure that your subnetworks do not overlap. If they do, the  network  create  fails  and
       Engine returns an error.

   Bridge driver options
       When  creating  a  custom network, the default network driver (i.e. bridge) has additional
       options that can be passed. The following are those  options  and  the  equivalent  docker
       daemon flags used for docker0 bridge:

       ┌───────────────────────────────────────────────┬────────────┬────────────────────────────────┐
       │OptionEquivalentDescription                    │
       ├───────────────────────────────────────────────┼────────────┼────────────────────────────────┤
       │com.docker.network.bridge.name                 │ -          │ Bridge  name  to  be used when │
       │                                               │            │ creating the Linux bridge      │
       ├───────────────────────────────────────────────┼────────────┼────────────────────────────────┤
       │com.docker.network.bridge.enable_ip_masquerade--ip-masq  │ Enable IP masquerading         │
       ├───────────────────────────────────────────────┼────────────┼────────────────────────────────┤
       │com.docker.network.bridge.enable_icc--icc      │ Enable   or   Disable    Inter │
       │                                               │            │ Container Connectivity         │
       ├───────────────────────────────────────────────┼────────────┼────────────────────────────────┤
       │com.docker.network.bridge.host_binding_ipv4--ip       │ Default    IP   when   binding │
       │                                               │            │ container ports                │
       ├───────────────────────────────────────────────┼────────────┼────────────────────────────────┤
       │com.docker.network.driver.mtu--mtu      │ Set the containers network MTU │
       ├───────────────────────────────────────────────┼────────────┼────────────────────────────────┤
       │com.docker.network.container_iface_prefix      │ -          │ Set  a   custom   prefix   for │
       │                                               │            │ container interfaces           │
       └───────────────────────────────────────────────┴────────────┴────────────────────────────────┘

       The  following  arguments  can  be passed to docker network create for any network driver,
       again with their approximate equivalents to docker daemon.

       ┌───────────┬──────────────┬───────────────────────────┐
       │ArgumentEquivalentDescription               │
       ├───────────┼──────────────┼───────────────────────────┤
       │--gateway  │ -            │ IPv4 or IPv6 Gateway  for │
       │           │              │ the master subnet         │
       ├───────────┼──────────────┼───────────────────────────┤
       │--ip-range--fixed-cidr │ Allocate IPs from a range │
       ├───────────┼──────────────┼───────────────────────────┤
       │--internal │ -            │ Restrict  external access │
       │           │              │ to the network            │
       ├───────────┼──────────────┼───────────────────────────┤
       │--ipv6--ipv6       │ Enable IPv6 networking    │
       ├───────────┼──────────────┼───────────────────────────┤
       │--subnet--bip        │ Subnet for network        │
       └───────────┴──────────────┴───────────────────────────┘

       For example, let's use -o  or  --opt  options  to  specify  an  IP  address  binding  when
       publishing ports:

       $ docker network create \
           -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
           simple-network

   Network internal mode
       By  default,  when  you  connect a container to an overlay network, Docker also connects a
       bridge network to it to provide external connectivity. If you want to create an externally
       isolated overlay network, you can specify the --internal option.

   Network ingress mode
       You  can  create  the  network which will be used to provide the routing-mesh in the swarm
       cluster. You do so by specifying --ingress when creating the  network.  Only  one  ingress
       network  can be created at the time. The network can be removed only if no services depend
       on it. Any option available when creating  an  overlay  network  is  also  available  when
       creating the ingress network, besides the --attachable option.

       $ docker network create -d overlay \
         --subnet=10.11.0.0/16 \
         --ingress \
         --opt com.docker.network.driver.mtu=9216 \
         --opt encrypted=true \
         my-ingress-network

   Run services on predefined networks
       You can create services on the predefined docker networks bridge and host.

       $ docker service create --name my-service \
         --network host \
         --replicas 2 \
         busybox top

   Swarm networks with local scope drivers
       You  can  create  a swarm network with local scope network drivers. You do so by promoting
       the network scope to swarm during the creation of the network.  You will then be  able  to
       use this network when creating services.

       $ docker network create -d bridge \
         --scope swarm \
         --attachable \
         swarm-network

       For  network  drivers  which  provide  connectivity  across  hosts  (ex. macvlan), if node
       specific configurations are needed in order to plumb the network on each  host,  you  will
       supply  that  configuration  via  a configuration only network.  When you create the swarm
       scoped network, you will  then  specify  the  name  of  the  network  which  contains  the
       configuration.

       node1$ docker network create --config-only --subnet 192.168.100.0/24 --gateway 192.168.100.115 mv-config
       node2$ docker network create --config-only --subnet 192.168.200.0/24 --gateway 192.168.200.202 mv-config
       node1$ docker network create -d macvlan --scope swarm --config-from mv-config --attachable swarm-network

OPTIONS

       --attachable[=false]            Enable manual container attachment

       --aux-address=map[]            Auxiliary IPv4 or IPv6 addresses used by Network driver

       --config-from=""            The network from which to copy the configuration

       --config-only[=false]            Create a configuration only network

       -d, --driver="bridge"            Driver to manage the Network

       --gateway=[]            IPv4 or IPv6 Gateway for the master subnet

       -h, --help[=false]            help for create

       --ingress[=false]            Create swarm routing-mesh network

       --internal[=false]            Restrict external access to the network

       --ip-range=[]            Allocate container ip from a sub-range

       --ipam-driver="default"            IP Address Management Driver

       --ipam-opt=map[]            Set IPAM driver specific options

       --ipv6[=false]            Enable IPv6 networking

       --label=            Set metadata on a network

       -o, --opt=map[]            Set driver specific options

       --scope=""            Control the network's scope

       --subnet=[]            Subnet in CIDR format that represents a network segment

SEE ALSO

       docker-network(1)