-----
====== Description ======
* We start out with a very basic Docker lab to build out confidence.
* Two plain Nginx containers.
* Run them on a bridge called **test-radiusdesk**
* Reach them on ports 8000 and 8001 respectively from the host Linux system laptop running Docker.
====== 1. Create the bridge ======
* Create the bridge
docker network create test-radiusdesk
#This was the result
f67e11184a174cf7fb82ba85734dd6d895f0690738cb07246fd7ee13b0024761
* Confirm it was created:
docker network ls
#This was the result
NETWORK ID NAME DRIVER SCOPE
395e31953e3c bridge bridge local
0d8b3aa905bf host host local
17e0830302a8 none null local
f67e11184a17 test-radiusdesk bridge local
* If you issue the //ip a// command it will be listed there (Look for the NETWORK ID)
17: br-f67e11184a17: mtu 1500 qdisc noqueue state DOWN group default
link/ether fe:67:4b:58:62:66 brd ff:ff:ff:ff:ff:ff
inet 172.20.0.1/16 brd 172.20.255.255 scope global br-f67e11184a17
valid_lft forever preferred_lft forever
====== 2.Run two nginx containers on that bridge ======
* Issue the following commands (We will use //docker up// first)
# Container 1 -> host port 8000
docker run -d --name nginx-8000 --network test-radiusdesk -p 8000:80 nginx
# Container 2 -> host port 8001
docker run -d --name nginx-8001 --network test-radiusdesk -p 8001:80 nginx
* What that does:
* --network test-radiusdesk plugs both into your custom bridge
* -p 8000:80 means laptop port 8000 forwards to container port 80
====== 3. Test from your laptop ======
* Use curl or your browser
curl http://localhost:8000
curl http://localhost:8001
* Both should show "Welcome to nginx!"
====== 4. Prove they can talk to each other by name (the bridge magic) ======
* Issue this command:
docker exec -it nginx-8000 ping nginx-8001
* It will resolve! On the default bridge this would NOT work.
* Another test:
docker exec -it nginx-8000 curl http://nginx-8001
* Container 8000 reaching container 8001 internally on port 80, without going through your host ports.
====== Useful cleanup / debug ======
* Some handy commands:
docker ps # see running
docker network inspect test-radiusdesk # see which containers + their IPs
docker logs nginx-8000
docker stop nginx-8000 nginx-8001 && docker rm nginx-8000 nginx-8001
docker network rm test-radiusdesk
====== Same thing with docker-compose (cleaner) ======
* Create docker-compose.yml:
services:
nginx-8000:
image: nginx
ports:
- "8000:80"
networks:
- test-radiusdesk
nginx-8001:
image: nginx
ports:
- "8001:80"
networks:
- test-radiusdesk
networks:
test-radiusdesk:
driver: bridge
* We can then bring it up with:
docker compose up -d
docker compose down