More on Linking Containers (Dan Wahlin)
- Communicating between containers
High Level, 2 methods
Legacy Linking - via naming convention
Bridge Network - container w/in bridge network can talk w/each other
- Legacy Linking
- 3 steps
- Each container to be linked must have a name
- 3 steps
- Legacy Linking
$ docker run -d --name <contName> <imageName>
Example: $ docker run -d --name my-mongodb mongo
- Link to running container by name
$ docker run -p 3000:3000 --link my-mongodb:mongodb danwal/node
This command runs danwal/postgres
Links danwal/node to my-mongodb
<contName>:<contAlias> - gives alias (‘mongodb’)
can use alias internally by linked containers (node)
Optional to give a named container an alias
- Repeat for additional containers
- Example: Linking Node.js container to MongoDB container
- Run mongodb from image AND NAME THE CONTAINER
$ docker run -d --name my-mongodb mongo
- Run node from image & link to mongodb container (“my-mongodb”)
$ docker run -p 3000:3000 --link my-mongodb:mongodb dougwells/node
- Another example
$ docker run -p 3000:5000 -d --link redis dougwells/dockerapp:v0.3
- That’s it …
- Testing networks
- Ping one container from server of another container in same network
$ docker exec -it python-app bash
/# ping redis (name or ip address of other container)
Network Linking (Creating an isolated network).
- AKA “Container Networking with a Bridge Driver”
- NOTE: if connecting more than 2 or 3 containers, likely better to use Docker Compose (see below)
- Note: Docker docs refers to networking as “Communicate between containers”
- Steps
- Create a bridge network
- Run containers w/in that network
- All containers within bridge network can “talk” with one another
- Note: containers can belong to more than one network
- Docker commands for creating bridge network & running containers in it
- Create network
$ docker network create --driver bridge isolated_network
create network bridge network network name
- Run containers from within the network
$ docker run -d --net=isolated_network --name mongodb mongo
$ docker run -d --net=isolated_network --name nodeapp -p 3000:3000 dougwells/node