From b72aca56d94f9d19364b3299a9f4139da62d03ef Mon Sep 17 00:00:00 2001 From: Moritz <22394314+movd@users.noreply.github.com> Date: Sun, 25 Nov 2018 01:11:00 +0100 Subject: [PATCH] Add: docker network article to guide (#22484) * Add: docker network article to guide * grammar corrections --- guide/english/docker/docker-network/index.md | 72 ++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 guide/english/docker/docker-network/index.md diff --git a/guide/english/docker/docker-network/index.md b/guide/english/docker/docker-network/index.md new file mode 100644 index 0000000000..0af30bf54c --- /dev/null +++ b/guide/english/docker/docker-network/index.md @@ -0,0 +1,72 @@ +--- +title: Docker Network +--- + +By design containers are isolated from the host and other running containers. The virtual networking of Docker containers allows them to talk to services inside other containers or on the host. + +By default, every container gets a virtual Ethernet interface that gets connected via a bridge on the host. + +## List all Docker networks + +`docker network ls` lists all current Docker networks. + +When installing Docker it creates three default networks: + +- *bridge*: +Default for containers that are run without a network specified +- *host*: +Allows a container to directly use the network stack of the host +- *none*: +No networking to other containers is possible + +You can use these, but when you plan on running your service containers in production it is advised to create special networks. + +## Inspect a Docker Network + +`docker network inspect NAMEOFNETWORK` outputs details on the configuration of the network in JSON format. For example, the containers that are part of the network, or their private IPv4-adresses. + +```json +"Containers": { + "156693991b505f5c17ae524ee31fe18775e62011db816cce5313cd2f22576a9c": { + "Name": "app", + "EndpointID": "ac4d2dff6f2191fa22749d6c00a2005f400ee74771e0e9186ffa35c94f9b9994", + "MacAddress": "02:42:ac:18:00:02", + "IPv4Address": "172.24.0.2/16", + "IPv6Address": "" + }, + "64b4328f46a7c4f26e925b66cd6783dc024a93210e958b768292427e52b35bf3": { + "Name": "database", + "EndpointID": "b7dcf87f8a8501eab01c6e7fe58aa9454ae81c84c3bc41d9490bcd92e2ab531a", + "MacAddress": "02:42:ac:18:00:03", + "IPv4Address": "172.24.0.3/16", + "IPv6Address": "" + } +``` + +## Create a Docker network + +To create a network simply run: + +`docker network create my_app_network` + +## Attach Containers to a network + +To directly attach a new container to the newly created network run: + +`docker run --name my_new_webapp --network="my_app_network" -d httpd:2.4-alpine` + +To attach an already running container to a network run: + +`docker network connect my_app_network my_running_webapp` + +They can now talk to each other. + +## Networking with Docker Compose + +When running your containers with Docker Compose it by default creates a network of all service containers in the `docker-compose.yml` file. + +#### For More Information: +- [Docker Networking: Overview](https://docs.docker.com/network/) +- [Docker Networking: Tutorial for standalone containers](https://docs.docker.com/network/network-tutorial-standalone/) +- [Docker Compose: Networking in Compose](https://docs.docker.com/compose/networking/) +