Introduction
Docker CLI is a powerful tool that enables developers to interact with Docker containers, images, and networks through command-line interfaces. This comprehensive tutorial will guide you through essential Docker CLI techniques, helping you understand how to efficiently manage and manipulate containers, build robust development environments, and optimize your containerization workflow.
Docker CLI Basics
What is Docker CLI?
Docker Command Line Interface (CLI) is a powerful tool that allows users to interact with Docker daemon and manage containers, images, networks, and volumes. It provides a text-based interface for executing Docker commands and performing various operations.
Installation and Setup
Before using Docker CLI, ensure Docker is installed on your Ubuntu 22.04 system:
## Update package index
sudo apt update
## Install Docker
sudo apt install docker.io
## Verify installation
docker --version
Basic Docker CLI Structure
Docker CLI commands follow a standard syntax:
docker <object> <command> <options>
Command Categories
| Category | Purpose |
|---|---|
| Management Commands | Manage Docker objects |
| Image Commands | Pull, build, and manage images |
| Container Commands | Create, run, and control containers |
| Network Commands | Configure Docker networks |
| Volume Commands | Manage persistent data storage |
Authentication and Permissions
graph TD
A[User] --> B{Docker CLI}
B --> |Requires Sudo| C[Root Permissions]
B --> |User Group| D[Docker Group Access]
To avoid using sudo for every command, add your user to the docker group:
## Add current user to docker group
sudo usermod -aG docker $USER
## Restart session
newgrp docker
Docker CLI Configuration
Configuration files are typically located in:
/etc/docker/daemon.json(system-wide)~/.docker/config.json(user-specific)
Key Concepts
- Docker Daemon: Background service managing Docker objects
- Docker Client: CLI tool for interacting with daemon
- Docker Objects: Images, Containers, Networks, Volumes
By understanding these basics, users can effectively leverage Docker CLI for containerization tasks. LabEx recommends practicing these fundamental commands to build a strong foundation in Docker management.
Common Docker Commands
Image Management Commands
Pulling Images
## Pull an image from Docker Hub
docker pull ubuntu:latest
docker pull nginx:1.21
Listing Images
## List all local images
docker images
docker image ls
Building Images
## Build image from Dockerfile
docker build -t myapp:v1 .
Container Operations
Running Containers
## Run a new container
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash
Container Management Commands
| Command | Description | Example |
|---|---|---|
docker ps |
List running containers | docker ps |
docker ps -a |
List all containers | docker ps -a |
docker start |
Start stopped container | docker start web-server |
docker stop |
Stop running container | docker stop web-server |
docker rm |
Remove container | docker rm web-server |
Networking Commands
graph TD
A[Docker Network Commands]
A --> B[Create Network]
A --> C[List Networks]
A --> D[Inspect Network]
Network Operations
## Create a custom network
docker network create mynetwork
## List networks
docker network ls
## Connect container to network
docker network connect mynetwork web-server
Volume Management
## Create a volume
docker volume create mydata
## List volumes
docker volume ls
## Mount volume to container
docker run -v mydata:/app nginx
Debugging and Inspection
## View container logs
docker logs web-server
## Execute command in running container
docker exec -it web-server bash
## Inspect container details
docker inspect web-server
Advanced Commands
Cleaning Up
## Remove unused images
docker image prune
## Remove all stopped containers
docker container prune
Best Practices
- Always use specific image tags
- Remove unnecessary containers and images
- Use volume for persistent data
- Leverage network isolation
LabEx recommends mastering these common Docker CLI commands to efficiently manage containerized environments.
CLI Workflow Patterns
Development Workflow
graph TD
A[Code Development] --> B[Build Docker Image]
B --> C[Test Container]
C --> D[Push to Registry]
D --> E[Deploy Container]
Typical Development Cycle
## Clone project
git clone https://github.com/example/project
## Create Dockerfile
touch Dockerfile
## Build image
docker build -t myapp:dev .
## Run container for testing
docker run -d --name test-container myapp:dev
Continuous Integration Workflow
Build and Test
## Build image with build arguments
docker build --build-arg ENV=development -t myapp:ci .
## Run automated tests
docker run --rm myapp:ci npm test
Container Lifecycle Management
Workflow Stages
| Stage | Docker Command | Purpose |
|---|---|---|
| Build | docker build |
Create image |
| Test | docker run |
Validate container |
| Push | docker push |
Share image |
| Deploy | docker run |
Run in production |
Multi-Container Deployment
Docker Compose Workflow
## Define services in docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "8000:80"
database:
image: postgres:latest
## Start multi-container environment
docker-compose up -d
Microservices Pattern
graph TD
A[API Service] --> B[Database Service]
A --> C[Cache Service]
A --> D[Authentication Service]
Service Management
## Create network for microservices
docker network create microservices-net
## Run services with network connection
docker run -d --name api --network microservices-net myapi
docker run -d --name database --network microservices-net mydb
Debugging Workflow
Troubleshooting Steps
## Inspect container logs
docker logs api-service
## Execute interactive shell
docker exec -it api-service /bin/bash
## Check container resource usage
docker stats api-service
Production Deployment Workflow
Image Tagging Strategy
## Tag image for production
docker tag myapp:latest myregistry.com/myapp:v1.0
## Push to private registry
docker push myregistry.com/myapp:v1.0
## Pull and run in production
docker pull myregistry.com/myapp:v1.0
docker run -d myregistry.com/myapp:v1.0
Best Practices
- Use specific image tags
- Implement multi-stage builds
- Minimize image size
- Use Docker Compose for complex setups
LabEx recommends practicing these workflow patterns to streamline Docker container management and deployment processes.
Summary
By mastering Docker CLI commands and workflow patterns, developers can significantly enhance their container management skills. This tutorial has equipped you with fundamental techniques to navigate, create, manage, and optimize Docker containers, empowering you to leverage Docker's full potential in modern software development and deployment scenarios.



