# Cheat Sheet #day15 - Docker Commands

### Docker Commands Cheat Sheet

Docker is a platform for developing, shipping, and running applications in containers. Here is a cheat sheet with the most commonly used Docker commands.

#### Basic Docker Commands

* **Check Docker Version**:
    
    ```sh
    docker --version
    ```
    
* **Get System-wide Information**:
    
    ```sh
    docker info
    ```
    

#### Working with Containers

* **List Running Containers**:
    
    ```sh
    docker ps
    ```
    
* **List All Containers** (including stopped):
    
    ```sh
    docker ps -a
    ```
    
* **Start a Container**:
    
    ```sh
    docker start CONTAINER_ID
    ```
    
* **Stop a Container**:
    
    ```sh
    docker stop CONTAINER_ID
    ```
    
* **Remove a Container**:
    
    ```sh
    docker rm CONTAINER_ID
    ```
    
* **Remove All Stopped Containers**:
    
    ```sh
    docker container prune
    ```
    

#### Working with Images

* **List Images**:
    
    ```sh
    docker images
    ```
    
* **Pull an Image from Docker Hub**:
    
    ```sh
    docker pull IMAGE_NAME
    ```
    
* **Remove an Image**:
    
    ```sh
    docker rmi IMAGE_NAME
    ```
    
* **Build an Image from a Dockerfile**:
    
    ```sh
    docker build -t IMAGE_NAME PATH_TO_DOCKERFILE
    ```
    
* **Tag an Image**:
    
    ```sh
    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
    ```
    

#### Running Containers

* **Run a Container** (from an image):
    
    ```sh
    docker run IMAGE_NAME
    ```
    
* **Run a Container in Detached Mode**:
    
    ```sh
    docker run -d IMAGE_NAME
    ```
    
* **Run a Container with a Specific Name**:
    
    ```sh
    docker run --name CONTAINER_NAME IMAGE_NAME
    ```
    
* **Run a Container and Map Ports**:
    
    ```sh
    docker run -p HOST_PORT:CONTAINER_PORT IMAGE_NAME
    ```
    
* **Run a Container and Mount a Volume**:
    
    ```sh
    docker run -v /host/path:/container/path IMAGE_NAME
    ```
    

#### Inspecting Containers and Images

* **Inspect a Container**:
    
    ```sh
    docker inspect CONTAINER_ID
    ```
    
* **Inspect an Image**:
    
    ```sh
    docker inspect IMAGE_NAME
    ```
    

#### Managing Docker Networks

* **List Docker Networks**:
    
    ```sh
    docker network ls
    ```
    
* **Create a Network**:
    
    ```sh
    docker network create NETWORK_NAME
    ```
    
* **Remove a Network**:
    
    ```sh
    docker network rm NETWORK_NAME
    ```
    
* **Connect a Container to a Network**:
    
    ```sh
    docker network connect NETWORK_NAME CONTAINER_NAME
    ```
    
* **Disconnect a Container from a Network**:
    
    ```sh
    docker network disconnect NETWORK_NAME CONTAINER_NAME
    ```
    

#### Docker Compose Commands

* **Start Services Defined in docker-compose.yml**:
    
    ```sh
    docker-compose up
    ```
    
* **Start Services in the Background**:
    
    ```sh
    docker-compose up -d
    ```
    
* **Stop Services**:
    
    ```sh
    docker-compose down
    ```
    
* **Build or Rebuild Services**:
    
    ```sh
    docker-compose build
    ```
    
* **View Compose Logs**:
    
    ```sh
    docker-compose logs
    ```
    
* **Scale Services**:
    
    ```sh
    docker-compose scale SERVICE=NUM
    ```
    

#### Miscellaneous Commands

* **View Container Logs**:
    
    ```sh
    docker logs CONTAINER_ID
    ```
    
* **Execute a Command in a Running Container**:
    
    ```sh
    docker exec -it CONTAINER_ID COMMAND
    ```
    
* **Follow Log Output**:
    
    ```sh
    docker logs -f CONTAINER_ID
    ```
    
* **Restart a Container**:
    
    ```sh
    docker restart CONTAINER_ID
    ```
    

#### Cleaning Up

* **Remove All Unused Images**:
    
    ```sh
    docker image prune -a
    ```
    
* **Remove All Unused Volumes**:
    
    ```sh
    docker volume prune
    ```
    
* **Remove All Unused Networks**:
    
    ```sh
    docker network prune
    ```
    

#### Conclusion

This cheat sheet provides a quick reference to the most commonly used Docker commands, helping you manage containers, images, networks, and more efficiently. For more detailed information, refer to the [official Docker documentation](https://docs.docker.com/).
