From 180b7f82f4b52f155496f314b072be450ef62b9c Mon Sep 17 00:00:00 2001 From: RadinPirouz Date: Sat, 14 Sep 2024 16:02:56 +0330 Subject: [PATCH] Update Docker Commands Doc --- .../Docker/2-Commands.md | 168 +++++++++++------- 1 file changed, 100 insertions(+), 68 deletions(-) diff --git a/Containerization & Orchestration/Docker/2-Commands.md b/Containerization & Orchestration/Docker/2-Commands.md index ed1a70f..eadc0bc 100755 --- a/Containerization & Orchestration/Docker/2-Commands.md +++ b/Containerization & Orchestration/Docker/2-Commands.md @@ -1,112 +1,140 @@ -# Docker Commands Guide +# **Docker Commands Guide** -## Docker Data Directory -Docker stores its files, such as images, containers, and volumes, in specific directories. These are essential for Docker's operation. +## **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/`**: This is Docker's primary data directory where all data related to Docker is stored. -- **`/var/lib/docker/containers/`**: Contains the configurations and files for individual Docker containers. -- **`/var/lib/docker/volumes/`**: Stores the data for Docker volumes, which allow persistent data storage outside of containers. +- **`/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. --- -## Installing Docker on Ubuntu +## **2. Installing Docker on Ubuntu** -Here’s a step-by-step explanation of the commands used to install Docker on Ubuntu. +Follow these steps to install Docker on Ubuntu. +### **Step 1: Update package list and install required packages** ```bash -# Update the package list and install required packages sudo apt update && sudo apt install -y ca-certificates curl ``` -- **`sudo apt update`**: Updates the local package list to ensure you're downloading the latest versions. -- **`sudo apt install -y ca-certificates curl`**: Installs essential packages like `ca-certificates` and `curl` for secure communication and downloading files. +- **`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 -# Create a directory for Docker's GPG key and download it 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 directory `/etc/apt/keyrings` with the correct permissions for storing GPG keys. -- **`curl -fsSL -o `**: Downloads Docker’s GPG key securely and stores it as `docker.asc`. -- **`chmod a+r`**: Gives read permission to all users for the GPG key file. +- **`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 -# Add Docker's official repository to Apt sources 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 ``` -- **`dpkg --print-architecture`**: Determines the system's architecture (e.g., `amd64`). -- **`os-release`**: Fetches the OS version to ensure the correct Docker version is downloaded for your system. +- This command adds Docker's official repository to your Apt sources list. +### **Step 4: Install Docker** ```bash -# Update the package list and install Docker 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`**: Installs the Docker command-line interface. -- **`containerd.io`**: Installs Containerd, a container runtime used by Docker. -- **`docker-buildx-plugin`**: Installs Docker Buildx, an advanced image builder. -- **`docker-compose-plugin`**: Installs Docker Compose, which helps manage multi-container applications. +- **`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. --- -## Docker CLI Commands - -### Authentication +## **3. Docker CLI Commands** +### **3.1 Authentication** ```bash docker login ``` -- **`docker login`**: Authenticates your Docker CLI with Docker Hub or a private registry by prompting for credentials. - ---- - -### Image Management -Image management commands help you interact with Docker images: downloading, saving, loading, and removing images. +- **`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 a Docker image from the specified repository (e.g., Docker Hub). +- **`docker pull `**: Downloads an image from the specified repository. ```bash docker images ``` -- **`docker images`**: Lists all Docker images stored on your system. +- **`docker images`**: Lists all images on your system. ```bash docker rmi -f ``` -- **`docker rmi -f `**: Forcefully removes a Docker image from your system. Use caution as this will permanently delete the image. +- **`docker rmi -f `**: Forcefully removes the specified image. ```bash docker save -o ``` -- **`docker save -o `**: Saves a Docker image as a tar archive file. Useful for transferring images. +- **`docker save -o `**: Saves an image as a `.tar` file. ```bash docker load -i ``` -- **`docker load -i `**: Loads a Docker image from a tar archive file. +- **`docker load -i `**: Loads an image from a `.tar` file. --- -### Container Management -These commands allow you to create, run, manage, and remove containers. +### **3.3 Container Management** ```bash docker run ``` -- **`docker run `**: Runs a Docker container based on the specified image. Add options for more customization. +- **`docker run `**: Runs a container from the specified image. ```bash -docker run -it +docker run -it nginx ``` -- **`docker run -it`**: Runs a container in interactive mode with a terminal. +- **`docker run -it`**: Runs a container interactively with a terminal. ```bash -docker run -dit +docker run -dit nginx ``` -- **`docker run -dit`**: Runs a container in detached mode with a terminal, meaning it runs in the background. +- **`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 @@ -116,7 +144,7 @@ docker exec -it ```bash docker stop ``` -- **`docker stop `**: Stops a running container gracefully. +- **`docker stop `**: Stops a running container. ```bash docker rm @@ -131,12 +159,12 @@ docker rm -f ```bash docker ps -aq ``` -- **`docker ps -aq`**: Lists all container IDs, both running and stopped. +- **`docker ps -aq`**: Lists all container IDs, including stopped ones. ```bash docker ps -aq -f status=exited ``` -- **`docker ps -aq -f status=exited`**: Lists the container IDs of all stopped (exited) containers. +- **`docker ps -aq -f status=exited`**: Lists only the stopped container IDs. ```bash docker container prune @@ -146,72 +174,70 @@ docker container prune ```bash docker commit ``` -- **`docker commit `**: Creates a new Docker image from an existing container. +- **`docker commit `**: Creates a new image from a running or stopped container. ```bash docker inspect ``` -- **`docker inspect `**: Displays detailed information about a container’s configuration and state. +- **`docker inspect `**: Displays detailed information about a container. ```bash docker inspect --format '{{ .NetworkSettings.IPAddress }}' ``` -- **`docker inspect --format '{{ .NetworkSettings.IPAddress }}' `**: Retrieves the IP address of a specific container. +- **`docker inspect --format '{{ .NetworkSettings.IPAddress }}' `**: Retrieves the container's IP address. ```bash docker cp :/ ``` -- **`docker cp :/`**: Copies a file from your local system to a Docker container. +- **`docker cp :/`**: Copies files from local machine to the container. ```bash docker cp :/ ``` -- **`docker cp :/ `**: Copies a file from a Docker container to your local system. +- **`docker cp :/ `**: Copies files from the container to the local machine. ```bash docker stats ``` -- **`docker stats`**: Displays a live stream of resource usage statistics for all running containers. +- **`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 from a Dockerfile located at the specified path. +- **`docker build -t : `**: Builds a Docker image using a Dockerfile. --- -### Volume Management -Docker volumes are used to persist data between container restarts. These commands manage those volumes. +## **4. Volume Management** ```bash docker volume ls ``` -- **`docker volume ls`**: Lists all Docker volumes available on your system. +- **`docker volume ls`**: Lists all Docker volumes. ```bash docker volume create ``` -- **`docker volume create `**: Creates a new volume with the specified name. +- **`docker volume create `**: Creates a new volume. ```bash docker volume inspect ``` -- **`docker volume inspect `**: Displays detailed information about the specified volume. +- **`docker volume inspect `**: Shows detailed information about a volume. ```bash docker run -dit --name -v : ``` -- **`docker run -v :`**: Runs a container and mounts the specified volume at the given location inside the container. +- **`docker run -v :`**: Attaches a volume to a container. --- -### Network Management -These commands help manage Docker networks, enabling containers to communicate with each other. +## **5. Network Management** ```bash docker network ls ``` -- **`docker network ls`**: Lists all Docker networks on your system. +- **`docker network ls`**: Lists all Docker networks. ```bash docker network create @@ -221,21 +247,27 @@ docker network create ```bash docker network create --subnet / --gateway --driver= ``` -- **`docker network create --subnet / --gateway --driver= `**: Creates a custom Docker network with specified settings (subnet, gateway, and 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 and connects it to the specified network. +- **`docker run --network `**: Runs a container on a specified network. ```bash docker network connect ``` -- **`docker network connect `**: Connects an existing container to the specified network. + +- **`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 the specified container from the network. +- **`docker network disconnect `**: Disconnects a container from a network. +