= Docker Bridge Networks = '''Bridge networks''' are a type of networks used by `dockerd(8)`. <> ---- == Default Network == By default, containers attach to bridge networks. See [[Docker/Networking|here]] to change that. If a bridge network is not specified, the '''default network''' is used. This network is special in that there is no name resolution; the only way to communicate between containers is their ephemeral IP addresses. Furthermore, the default network's use of [[Protocols/IP|IPv6]] mandatorily matches the `dockerd(8)` configuration. See [[Docker/Configuration#IPv6|here]] to enable it. ---- == Custom Networks == Custom bridge networks can be created like: {{{ docker network create my-net }}} To enable IPv6 on a custom network, add the `--ipv6` option. === Attaching Containers === A container can be created on a custom network by specifying the `--network` option. {{{ docker run --detach --name my-nginx \ --network=my-net \ nginx:latest }}} A running container can be attached to a custom network like: {{{ docker network connect my-net my-nginx }}} Containers on a custom bridge network can communicate with each other by addressing the containers' names. For example, the above container would be accessible at `http://my-nginx`. {{{ $ docker run --interactive --tty --name my-alpine \ --network=my-net \ alpine:latest # apk add curl [ ... ] # curl http://my-nginx Welcome to nginx! [ ... ] }}} Note that ''all'' ports are exposed. ---- == Destroying Networks == Custom networks persist even when a container is stopped and destroyed. To list all networks, try: {{{ docker network ls }}} To delete a network, try: {{{ docker network rm my-net }}} Note that a network cannot be destroyed if any containers are attached to it. They must be explicitly detached first. {{{ docker network disconnect my-net my-nginx }}} ---- == Docker Compose == By default, [[Docker/Compose|Docker Compose]] creates a bridge network for all services defined in a compose file. Given this compose file: {{{ services: web: image: nginx ports: - "8000:80" db: image: postgres ports: - "8001:5432" }}} 1. A bridge network named like `myapp-default` would be created 2. A container named `web` would be attached to that network and would be reachable within the network at `http://web:80` or from the host at port 8000 3. A container named `db` would be attached to that network and would be reachable within the network at `postgres://db:5432` or from the host at port 8001 Note that all ports are exposed within a bridge network. This can create a need to review and manually delete networks on a recurring basis. See above for details. ---- == See also == [[Docker/Networking|Docker Networking]] ---- CategoryRicottone