Docker for Backend Developers: Images, Containers, Networks, Volumes, and Compose
For backend developers, Docker is most useful because it packages an application and its runtime dependencies into a repeatable environment.
Image vs Container
An image is the immutable template. A container is a running instance of that image.
Build once:
docker build -t api:1.0 .
Run many times:
docker run --rm -p 3000:3000 api:1.0
Ports
Containers have their own network namespace. Publishing a port maps a host port to the container:
localhost:3000 → container:3000
EXPOSE documents the intended container port; it does not itself publish the port to the host.
Networks
Containers on the same Compose network can discover each other by service name.
api → postgres:5432
Do not hard-code changing container IPs.
Use separate networks when you need isolation—for example, a public reverse proxy does not necessarily need direct access to the database network.
Volumes
Container writable filesystems are disposable. Use named volumes or external storage for persistent state.
volumes:
db-data:
A volume keeps data across container recreation, but it is not automatically a backup.
Docker Compose
Compose is ideal for local stacks:
services:
api:
build: .
ports: ["3000:3000"]
db:
image: postgres
volumes:
- db-data:/var/lib/postgresql/data
It gives the backend team one command to start the app plus databases, caches, or queues.
Development vs Production
Development often uses bind mounts and hot reload. Production should normally run code baked into an immutable image, use proper secrets/config injection, and avoid mounting the source tree from the host.
Practical Rules
- Keep Dockerfiles version-controlled.
- Use
.dockerignore. - Pin meaningful image/runtime versions.
- Run applications as non-root where practical.
- Keep persistent data outside the disposable container layer.
- Use service names for container-to-container networking.
- Log to stdout/stderr unless the workload has a specific reason not to.
- Treat Compose as a useful single-host/dev tool, not automatically as a replacement for an orchestrator at larger scale.
Final Takeaway
Backend Docker skills come down to five concepts: image, container, port, network, and volume. Compose then combines them into a reproducible application stack. Learn those well before adding orchestration complexity.
References
BUILDING AN AI PRODUCT?
Talk to Lofingo about custom autonomous AI agents, enterprise workflow automation, and scalable software systems.
EXPLORE AI SERVICES →