This document discusses Docker networking and the legacy "--link" option. It provides an overview of default Docker networks like bridge, none and host. It also describes how to create user-defined networks and connect containers to them. The document recommends using user-defined networks over the legacy "--link" option, which is being removed. It notes that Docker provides an embedded DNS server for containers connected to the same user-defined network to resolve each other by container name.
2. Avash Mulmi
● Linux System Engineer, Real Time Solutions Pvt. Ltd.
● Docker Kathmandu (K-L-B), Community Leader
● Mozilla Nepal, Community Leader
● Volunteer, FOSS Nepal Community
5. Bridge Network
● Default and User Defined
● docker0 interface
● Connected to this network by default
● Check network info of docker0 and that of the running container
6. None and Host Network
● None: Do not connect to any networks
● Host: No isolation between host and container network
● None & Host are not directly configurable in Docker
7. Basic Docker Network Commands
● View all available networks: #~ docker network ls
● Inspect network: #~ docker network inspect nw_name
● Create a network: #~ docker network create nw_name
● Connect to network: #~ docker network connect nw_name container_name
● Disconnect from network: #~ docker network disconnect nw_name
container_name
● Delete a network: #~ docker network rm nw_name
● Delete unused networks: #~ docker network prune
9. Connecting Containers to New
Network
● Running containers & New Containers
● #~ docker network connect nw_name container_name
● #~ docker run -dit --network=nw_name image:tag
● #~ docker run -dit --network=nw_name --ip=192.168.34.2 image:tag
● Verify with docker network inspect nw_name or connecting to the
container and checking its interfaces.
10. Embedded DNS Server
● Docker engine has its own DNS server for user defined networks
● Can ping/communicate to the another container in the same
network using the container_name
● Containers have to be in the same network to use
container_name, else IP address needs to be used
● Examples
11. Legacy “--link” option
● Multiple inter-related containers for a project? Familiar with “--link”
● #~ docker run --name somedb mysql
#~ docker run --name web_container –link somedb:db web
● ‘--link’ is now legacy, will be removed soon
● Docker encourages to use user-defined networks instead of ‘--link’
● More read here:
https://docs.docker.com/engine/userguide/networking/default_network/d
ockerlinks/
12. Recap
● Create a separate user defined network
● Connect containers to it, DB Container, Web Container, Cache
Container etc.
● Docker provides Embedded DNS Server
● Communicate among one another in same network using
container_names
● Try not to use legacy “--link” to link containers
13. Using network instead of “--link”
● Create network, my_network
● Create database contaiiner ‘my_db’, connect it to my_network (let
db)
● Create web container ‘my_web’, connect it to my_network
● Use the name ‘my_db’ in the ‘my_web’ container config files.
14. References
● Docker Container Networking
https://docs.docker.com/engine/userguide/networking/
● Embedded DNS server in User Defined Networks:
https://docs.docker.com/engine/userguide/networking/configure-
dns/
● Legacy “--link”
https://docs.docker.com/engine/userguide/networking/default_net
work/dockerlinks/