The Docker client (docker) is the primary way that many Docker users interact with Docker. When you use commands such as docker run, the client sends these commands to dockerd, which carries them out. The docker command uses the Docker API. The Docker client can communicate with more than one daemon.
Local Development: Your Client and Daemon both run on your laptop.
Remote Deployment: Your local Client can be configured to talk to a Docker Daemon running on an AWS EC2 instance or a staging server.
CI/CD: In your GitHub Actions, the runner uses the Docker Client to tell a remote registry or a build server to package your Node.js code.
docker system prune: The 'cleanup' command. It removes all unused containers, networks, and images to reclaim disk space.
docker inspect <id>: Returns a massive JSON object with the low-level configuration of a container or image (IP addresses, volume mounts, environment variables).
docker exec -it <id> /bin/sh: Essential for debugging. It allows the client to 'enter' a running container (like your MongoDB or Node.js container) to run commands manually.
docker context: A modern client feature that allows you to easily switch between different Docker environments (e.g., switching from your 'default' local engine to a 'production' AWS engine).
The CLI Client: Is a small, open-source binary found in /usr/bin/docker.
Docker Desktop: Is a GUI application that bundles the client, but its main job is to manage the hidden Linux Virtual Machine and the Docker Daemon that Mac and Windows require to run Linux containers.