Update Docker Command Doc

This commit is contained in:
2024-09-21 18:27:04 +03:30
parent 840f0b47f3
commit e877fc0b1a
2 changed files with 187 additions and 203 deletions

View File

@@ -1,50 +1,48 @@
# **Docker Commands Guide** # **Docker Commands Guide**
## **1. Docker Data Directory** ## **1. Docker Data Directories**
Docker stores its critical files like images, containers, and volumes in specific directories. These are essential for Docker's operation. Docker stores essential data, including images, containers, and volumes, in specific directories.
- **`/var/lib/docker/`**: The main directory where Docker stores all its data. - **`/var/lib/docker/`**: Main directory for Docker's data, including images, containers, and volumes.
- **`/var/lib/docker/containers/`**: Contains configuration files for individual containers. - **`/var/lib/docker/containers/`**: Stores configuration files for individual containers.
- **`/var/lib/docker/volumes/`**: Stores data for Docker volumes, enabling persistent storage beyond container lifetimes. - **`/var/lib/docker/volumes/`**: Stores data for Docker volumes, which persist beyond the containers lifecycle.
--- ---
## **2. Installing Docker on Ubuntu** ## **2. Installing Docker on Ubuntu**
Follow these steps to install Docker on Ubuntu. ### **Step 1: Update Package List and Install Dependencies**
### **Step 1: Update package list and install required packages**
```bash ```bash
sudo apt update && sudo apt install -y ca-certificates curl 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 update`**: Refreshes the package list.
- **`sudo apt install -y ca-certificates curl`**: Installs essential tools like `ca-certificates` and `curl` for secure downloads. - **`sudo apt install -y ca-certificates curl`**: Installs certificates and `curl` to securely download Docker packages.
### **Step 2: Add Dockers GPG key** ### **Step 2: Add Dockers GPG Key**
```bash ```bash
sudo install -m 0755 -d /etc/apt/keyrings sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /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. - **`install -m 0755 -d /etc/apt/keyrings`**: Creates the `/etc/apt/keyrings` directory with appropriate permissions.
- **`curl -fsSL <url> -o <file>`**: Downloads Dockers GPG key securely. - **`curl -fsSL <url> -o <file>`**: Downloads Dockers GPG key.
- **`chmod a+r`**: Ensures the GPG key file is readable by all users. - **`chmod a+r`**: Grants read permissions for all users to the GPG key.
### **Step 3: Add Dockers official repository** ### **Step 3: Add Dockers Official Repository**
```bash ```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 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. - Adds Dockers repository to the Apt sources list.
### **Step 4: Install Docker** ### **Step 4: Install Docker**
```bash ```bash
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 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`**: Installs Docker Community Edition.
- **`docker-ce-cli`**: The Docker command-line interface. - **`docker-ce-cli`**: Docker command-line interface.
- **`containerd.io`**: Container runtime. - **`containerd.io`**: Container runtime.
- **`docker-buildx-plugin`**: Advanced build functionality. - **`docker-buildx-plugin`**: Provides advanced build functionality.
- **`docker-compose-plugin`**: Tool for managing multi-container applications. - **`docker-compose-plugin`**: Manages multi-container applications.
--- ---
@@ -54,235 +52,219 @@ sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io doc
```bash ```bash
docker login docker login
``` ```
- **`docker login`**: Prompts for credentials to log in to Docker Hub or a private registry. - **`docker login`**: Logs into Docker Hub or a private registry by prompting for credentials.
### **3.2 Image Management** ### **3.2 Image Management**
- **Download an image:**
```bash ```bash
docker pull <repo-addr> docker pull <repo-addr>
``` ```
- **`docker pull <repo-addr>`**: Downloads an image from the specified repository. - Downloads an image from a repository.
- **List images:**
```bash ```bash
docker images docker images
``` ```
- **`docker images`**: Lists all images on your system. - Displays all available images.
- **Remove an image:**
```bash ```bash
docker rmi -f <image-id> docker rmi -f <image-id>
``` ```
- **`docker rmi -f <image-id>`**: Forcefully removes the specified image. - Forcefully removes a specific image.
- **Save an image as a `.tar` file:**
```bash ```bash
docker save -o <file-location-and-name> <image-name> docker save -o <file-location-and-name> <image-name>
``` ```
- **`docker save -o <file-location>`**: Saves an image as a `.tar` file.
- **Load an image from a `.tar` file:**
```bash ```bash
docker load -i <file-location> docker load -i <file-location>
``` ```
- **`docker load -i <file-location>`**: Loads an image from a `.tar` file.
---
### **3.3 Container Management** ### **3.3 Container Management**
- **Run a container:**
```bash ```bash
docker run <options> <img-name> docker run <options> <image-name>
```
- **`docker run <img-name>`**: 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 --restart=always nginx
``` ```
- **Run an interactive container with a terminal:**
```bash ```bash
docker run -dit --restart=always nginx docker run -it <image-name>
``` ```
- **Run a container in detached mode:**
```bash ```bash
docker run -dit --name <container-name> nginx docker run -dit <image-name>
```
- Creates a named container.
```bash
docker run -dit --hostname=<hostname-sv> nginx
```
- Assigns a hostname to the container.
```bash
docker run -dit -e var1=data --name <container-name> --hostname=<hostname-sv> nginx
```
- Sets environment variables and runs a container with a custom name and hostname.
```bash
docker run -dit -p <sv_port>:<container_port> nginx
```
- Maps a host port to a container port.
```bash
docker run -dit -p <sv_port_from>-<sv_port_to>:<container_port_from>-<container_port_to> nginx
```
- Maps a range of ports between host and container.
```bash
docker run -dit -p 127.0.0.1:<sv_port_from>-<sv_port_to>:<container_port_from>-<container_port_to> 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 events
``` ```
- **Set a container to always restart:**
```bash
docker run -dit --restart=always <image-name>
```
- **Name a container:**
```bash
docker run -dit --name <container-name> <image-name>
```
- **Assign a hostname:**
```bash
docker run -dit --hostname=<hostname> <image-name>
```
- **Set environment variables:**
```bash
docker run -dit -e var1=data --name <container-name> --hostname=<hostname> <image-name>
```
- **Map host and container ports:**
```bash
docker run -dit -p <host-port>:<container-port> <image-name>
```
- **Run a container with memory and CPU limits:**
```bash
docker run -dit --name nginx --memory-reservation 150m --memory 500m nginx
```
- Limits memory reservation to 150MB and usage to a maximum of 500MB.
```bash ```bash
docker exec -it <container-name> docker run -dit --name nginx --cpus 2 --cpu-shares 100 nginx
``` ```
- **`docker exec -it <container-name>`**: Opens an interactive terminal inside a running container. - Limits the container to 2 CPUs.
- **Stream container logs in real-time:**
```bash
docker logs -f <container-name>
```
- **Access a containers terminal:**
```bash
docker exec -it <container-name> /bin/bash
```
- **Stop a container:**
```bash ```bash
docker stop <container-name> docker stop <container-name>
``` ```
- **`docker stop <container-name>`**: Stops a running container.
- **Remove a container:**
```bash ```bash
docker rm <container-name> docker rm <container-name>
``` ```
- **`docker rm <container-name>`**: Removes a stopped container.
- **Forcefully remove a running container:**
```bash ```bash
docker rm -f <container-name> docker rm -f <container-name>
``` ```
- **`docker rm -f <container-name>`**: Forcefully stops and removes a running container.
- **List all container IDs (including stopped):**
```bash ```bash
docker ps -aq 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.
- **Prune stopped containers:**
```bash ```bash
docker container prune docker container prune
``` ```
- **`docker container prune`**: Removes all stopped containers.
- **Commit a container to an image:**
```bash ```bash
docker commit <container-name> <new-image-name> docker commit <container-name> <new-image-name>
``` ```
- **`docker commit <container-name> <new-image-name>`**: Creates a new image from a running or stopped container.
- **Inspect container details:**
```bash ```bash
docker inspect <container-name> docker inspect <container-name>
``` ```
- **`docker inspect <container-name>`**: Displays detailed information about a container.
- **Copy files between host and container:**
```bash
docker cp <file-on-local> <container-name>:/<container-path>
```
```bash ```bash
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-name> docker cp <container-name>:/<container-path> <local-path>
``` ```
- **`docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-name>`**: Retrieves the container's IP address.
```bash
docker cp <file_on_local> <container-name>:/<location>
```
`-A` : use for archive mode (keep permmision and )
- **`docker cp <file_on_local> <container-name>:/<location>`**: Copies files from local machine to the container.
```bash
docker cp <container-name>:/<location> <local-location>
```
- **`docker cp <container-name>:/<location> <local-location>`**: Copies files from the container to the local machine.
- **View real-time container resource usage:**
```bash ```bash
docker stats docker stats
``` ```
- **`docker stats`**: Displays a real-time stream of resource usage for all running containers.
- **Build an image from a Dockerfile:**
```bash ```bash
docker build -t <app-name>:<app-ver> <path-to-dockerfile> docker build -t <app-name>:<app-version> <path-to-dockerfile>
``` ```
- **`docker build -t <app-name>:<app-ver> <path-to-dockerfile>`**: Builds a Docker image using a Dockerfile.
--- ---
## **4. Volume Management** ## **4. Volume Management**
Volumes store data that persists even when a container is deleted.
- **List all volumes:**
```bash ```bash
docker volume ls docker volume ls
``` ```
- **`docker volume ls`**: Lists all Docker volumes.
- **Create a volume:**
```bash ```bash
docker volume create <volume-name> docker volume create <volume-name>
``` ```
- **`docker volume create <volume-name>`**: Creates a new volume.
- **Inspect a volume:**
```bash ```bash
docker volume inspect <volume-name> docker volume inspect <volume-name>
``` ```
- **`docker volume inspect <volume-name>`**: Shows detailed information about a volume.
- **Mount a volume to a container:**
```bash ```bash
docker run -dit --name <container-name> -v <volume-name>:<container-location> <image-name> docker run -dit --name <container-name> -v <volume-name>:<container-path> <image-name>
```
- **Mount a file with read-only access:**
```bash
docker run -dit --name nginx -v /etc/resolv.conf:/etc/resolv.conf:ro nginx
```
- **Mount temporary filesystem in memory:**
```bash
docker run -dit --name nginx --tmpfs /opt:100M nginx
``` ```
- **`docker run -v <volume-name>:<container-location>`**: Attaches a volume to a container.
--- ---
## **5. Network Management** ## **5. Network Management**
Docker networks allow communication between containers.
- **List all networks:**
```bash ```bash
docker network ls docker network ls
``` ```
- **`docker network ls`**: Lists all Docker networks.
- **Create a network:**
```bash ```bash
docker network create <network-name> docker network create <network-name>
``` ```
- **`docker network create <network-name>`**: Creates a new Docker network.
- **Create a custom network with subnet and gateway:**
```bash ```bash
docker network create --subnet <ip>/<subnet> --gateway <gateway-ip> --driver=<network-type> <network-name> docker network create --subnet <subnet> --gateway <gateway-ip> --driver=<network-type> <network-name>
``` ```
- **`docker network create --subnet <ip>/<subnet> --gateway <gateway-ip> --driver=<network-type> <network-name>`**: Creates a custom network with specified settings.
- **Run a container on a specific network:**
```bash ```bash
docker run -dit --name <container-name> --network <network-name> <image-name> docker run -dit --name <container-name> --network <network-name> <image-name>
``` ```
- **`docker run --network <network-name>`**: Runs a container on a specified network.
- **Connect a running container to a network:**
```bash ```bash
docker network connect <network-name> <container-name> docker network connect <network-name> <container-name>
``` ```
- **Disconnect a container from a network:**
- **`docker network connect <network-name> <container-name>`**: Connects an existing container to a network.
```bash
docker network inspect <network-name>
```
- **`docker network inspect <network-name>`**: Displays detailed information about a network.
```bash ```bash
docker network disconnect <network-name> <container-name> docker network disconnect <network-name> <container-name>
``` ```
- **`docker network disconnect <network-name> <container-name>`**: Disconnects a container from a network.

View File

@@ -0,0 +1,2 @@
# **Docker Compose Guide**