73 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			73 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								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/)
							 | 
						||
| 
								 | 
							
								
							 |