Loading...
Loading...
Configure Docker networking for containers including bridge, overlay, and service discovery
npx skill4agent add pluginagentmarketplace/custom-plugin-docker docker-networking| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| driver | enum | No | bridge | bridge/overlay/host/macvlan |
| subnet | string | No | - | Custom subnet CIDR |
| internal | boolean | No | false | Internal-only network |
| Driver | Use Case | Multi-Host | Encryption |
|---|---|---|---|
| bridge | Single host, default | No | No |
| overlay | Swarm, multi-host | Yes | Optional |
| host | Max performance | No | N/A |
| macvlan | Physical network | No | No |
| none | Disable networking | No | N/A |
# Create network with custom subnet
docker network create \
--driver bridge \
--subnet 172.28.0.0/16 \
--gateway 172.28.0.1 \
my_network
# Run container on network
docker run -d --name app \
--network my_network \
nginx:alpineservices:
frontend:
image: nginx:alpine
networks:
- public
ports:
- "80:80"
backend:
image: node:20-alpine
networks:
- public
- private
expose:
- "3000"
database:
image: postgres:16-alpine
networks:
- private # Internal only
networks:
public:
driver: bridge
private:
driver: bridge
internal: true # No external access# Containers can reach each other by service name
services:
app:
image: myapp
environment:
# Use service name as hostname
DATABASE_HOST: database
CACHE_HOST: redis
database:
image: postgres:16-alpine
redis:
image: redis:alpine# Create encrypted overlay
docker network create \
--driver overlay \
--attachable \
--opt encrypted \
my_overlay# Map host:container
docker run -p 8080:80 nginx
# Bind to specific interface
docker run -p 127.0.0.1:8080:80 nginx
# Random host port
docker run -P nginx
# UDP port
docker run -p 53:53/udp dnsserver| Error | Cause | Solution |
|---|---|---|
| Typo or deleted | Create network |
| Port conflict | Change port |
| Wrong network | Check network membership |
| Service not ready | Add health checks |
docker network lsdocker network inspect <net>docker exec app nslookup backenddocker network lsdocker inspect <container>nslookupdocker port <container># List networks
docker network ls
# Inspect network
docker network inspect my_network
# Test connectivity
docker exec app ping -c 3 database
# Check DNS
docker exec app nslookup backend
# View port mappings
docker port container_name# Enter container network namespace
docker exec -it app sh
# Check DNS resolution
cat /etc/resolv.conf
nslookup database
# Check connectivity
ping -c 3 backend
curl http://backend:3000/healthSkill("docker-networking")