# 🐬Day 20 - Docker Cheat Sheet

***Docker*** is like a super tool that helps developers put their apps in containers. It's great for everyone, whether you're just starting out or want to get better at Docker. This cheat sheet will help you with installing Docker, managing volumes (like extra storage for your containers), handling images (like app blueprints), and doing things with containers (like starting, stopping, and removing them).

## **📀 Image Management:**

### **Build an image from a Dockerfile:**

```plaintext
docker build -t <image_name> <path_to_Dockerfile>
```

### **List all images:**

```plaintext
docker images
```

### **Pull an image from Docker Hub:**

```plaintext
docker pull <image_name>
```

### **Remove an image:**

```plaintext
docker rmi <image_name>
```

## **📀 Docker Container:**

### **Run a container:**

```plaintext
docker run <image_name>
```

### **List running containers:**

```plaintext
docker ps
```

### **List all containers (including stopped ones):**

```plaintext
docker ps -a
```

### **Start a stopped container:**

```plaintext
docker start <container_id>
```

### **Stop a running container:**

```plaintext
docker stop <container_id>
```

### **Remove a container:**

```plaintext
docker rm <container_id>
```

## **📀 Docker Volume:**

### **Create a volume:**

```plaintext
docker volume create <volume_name>
```

### **List volumes:**

```plaintext
docker volume ls
```

### **Inspect a volume:**

```plaintext
docker volume inspect <volume_name>
```

### **Remove a volume:**

```plaintext
docker volume rm <volume_name>
```

## **📀 Docker Networking:**

### **List networks:**

```plaintext
docker network ls
```

### **Inspect a network:**

```plaintext
docker network inspect <network_name>
```

### **Create a network:**

```plaintext
docker network create <network_name>
```

### **Connect a container to a network:**

```plaintext
docker network connect <network_name> <container_id>
```

### **Disconnect a container from a network:**

```plaintext
docker network disconnect <network_name> <container_id>
```

## **📀 Docker Compose:**

### **Start containers defined in a Compose file:**

```plaintext
docker-compose up
```

### **Stop containers defined in a Compose file:**

```plaintext
docker-compose down
```

### **Build and start containers (with rebuilding if needed):**

```plaintext
docker-compose up --build
```

### **List containers managed by Compose:**

```plaintext
docker-compose ps
```

### **Restart containers:**

```plaintext
docker-compose restart
```

### **Stop and remove containers:**

```plaintext
docker-compose down --volumes
```

This cheat sheet covers essential Docker commands for image management, container operations, volume handling, networking, and Docker Compose usage. Feel free to refer back to it whenever you need a quick reference!
