# **Docker Commands Guide** ## **1. Docker Data Directory** Docker stores its critical files like images, containers, and volumes in specific directories. These are essential for Docker's operation. - **`/var/lib/docker/`**: The main directory where Docker stores all its data. - **`/var/lib/docker/containers/`**: Contains configuration files for individual containers. - **`/var/lib/docker/volumes/`**: Stores data for Docker volumes, enabling persistent storage beyond container lifetimes. --- ## **2. Installing Docker on Ubuntu** Follow these steps to install Docker on Ubuntu. ### **Step 1: Update package list and install required packages** ```bash sudo apt update && sudo apt install -y ca-certificates curl ``` - **`sudo apt update`**: Refreshes the local package list to ensure you download the latest versions. - **`sudo apt install -y ca-certificates curl`**: Installs essential tools like `ca-certificates` and `curl` for secure downloads. ### **Step 2: Add Docker’s GPG key** ```bash sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc ``` - **`install -m 0755 -d /etc/apt/keyrings`**: Creates the `/etc/apt/keyrings` directory with the appropriate permissions. - **`curl -fsSL -o `**: Downloads Docker’s GPG key securely. - **`chmod a+r`**: Ensures the GPG key file is readable by all users. ### **Step 3: Add Docker’s official repository** ```bash echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` - This command adds Docker's official repository to your Apt sources list. ### **Step 4: Install Docker** ```bash sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` - **`docker-ce`**: Installs Docker Community Edition. - **`docker-ce-cli`**: The Docker command-line interface. - **`containerd.io`**: Container runtime. - **`docker-buildx-plugin`**: Advanced build functionality. - **`docker-compose-plugin`**: Tool for managing multi-container applications. --- ## **3. Docker CLI Commands** ### **3.1 Authentication** ```bash docker login ``` - **`docker login`**: Prompts for credentials to log in to Docker Hub or a private registry. ### **3.2 Image Management** ```bash docker pull ``` - **`docker pull `**: Downloads an image from the specified repository. ```bash docker images ``` - **`docker images`**: Lists all images on your system. ```bash docker rmi -f ``` - **`docker rmi -f `**: Forcefully removes the specified image. ```bash docker save -o ``` - **`docker save -o `**: Saves an image as a `.tar` file. ```bash docker load -i ``` - **`docker load -i `**: Loads an image from a `.tar` file. --- ### **3.3 Container Management** ```bash docker run ``` - **`docker run `**: Runs a container from the specified image. ```bash docker run -it nginx ``` - **`docker run -it`**: Runs a container interactively with a terminal. ```bash docker run -dit nginx ``` - **`docker run -dit`**: Runs a container in detached mode (background). ```bash docker run -dit --name nginx ``` - Creates a named container. ```bash docker run -dit --hostname= nginx ``` - Assigns a hostname to the container. ```bash docker run -dit -e var1=data --name --hostname= nginx ``` - Sets environment variables and runs a container with a custom name and hostname. ```bash docker run -dit -p : nginx ``` - Maps a host port to a container port. ```bash docker run -dit -p -:- nginx ``` - Maps a range of ports between host and container. ```bash docker run -dit -p 127.0.0.1:-:- nginx ``` - Binds container ports to specific IP addresses on the host. ```bash docker logs -f ``` - **`docker logs -f`**: Streams logs of a container in real-time. ```bash docker exec -it ``` - **`docker exec -it `**: Opens an interactive terminal inside a running container. ```bash docker stop ``` - **`docker stop `**: Stops a running container. ```bash docker rm ``` - **`docker rm `**: Removes a stopped container. ```bash docker rm -f ``` - **`docker rm -f `**: Forcefully stops and removes a running container. ```bash docker ps -aq ``` - **`docker ps -aq`**: Lists all container IDs, including stopped ones. ```bash docker ps -aq -f status=exited ``` - **`docker ps -aq -f status=exited`**: Lists only the stopped container IDs. ```bash docker container prune ``` - **`docker container prune`**: Removes all stopped containers. ```bash docker commit ``` - **`docker commit `**: Creates a new image from a running or stopped container. ```bash docker inspect ``` - **`docker inspect `**: Displays detailed information about a container. ```bash docker inspect --format '{{ .NetworkSettings.IPAddress }}' ``` - **`docker inspect --format '{{ .NetworkSettings.IPAddress }}' `**: Retrieves the container's IP address. ```bash docker cp :/ ``` - **`docker cp :/`**: Copies files from local machine to the container. ```bash docker cp :/ ``` - **`docker cp :/ `**: Copies files from the container to the local machine. ```bash docker stats ``` - **`docker stats`**: Displays a real-time stream of resource usage for all running containers. ```bash docker build -t : ``` - **`docker build -t : `**: Builds a Docker image using a Dockerfile. --- ## **4. Volume Management** ```bash docker volume ls ``` - **`docker volume ls`**: Lists all Docker volumes. ```bash docker volume create ``` - **`docker volume create `**: Creates a new volume. ```bash docker volume inspect ``` - **`docker volume inspect `**: Shows detailed information about a volume. ```bash docker run -dit --name -v : ``` - **`docker run -v :`**: Attaches a volume to a container. --- ## **5. Network Management** ```bash docker network ls ``` - **`docker network ls`**: Lists all Docker networks. ```bash docker network create ``` - **`docker network create `**: Creates a new Docker network. ```bash docker network create --subnet / --gateway --driver= ``` - **`docker network create --subnet / --gateway --driver= `**: Creates a custom network with specified settings. ```bash docker run -dit --name --network ``` - **`docker run --network `**: Runs a container on a specified network. ```bash docker network connect ``` - **`docker network connect `**: Connects an existing container to a network. ```bash docker network inspect ``` - **`docker network inspect `**: Displays detailed information about a network. ```bash docker network disconnect ``` - **`docker network disconnect `**: Disconnects a container from a network.