# Day 20 : Docker Cheat-sheet

## **Docker:**

Docker works as a platform as a service. It is the best example of PAAS. Docker required a docker engine. Docker creates a virtual environment called a docker container. It works independently without disturbing other projects. Docker containers all things like code, required commands, and authentication.

## Docker commands:

# **docker build**: Builds an image from a Dockerfile.

```plaintext
docker build [OPTIONS] PATH | URL | 

docker build -t <image_name> .
```

# **docker run**: Runs a command in a new container.

```plaintext
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run -d --name <container-name> -p 80:80 <image-name>
```

# **docker start**: Starts one or more stopped containers.

```plaintext
docker start <container-name>
```

# **docker stop**: Stops one or more running containers.

```plaintext
docker stop <container-name>
```

# **docker pull**: Pulls an image or a repository from a registry.

```plaintext
docker pull <image-name:tag>
```

# **docker push**: Pushes an image or a repository to a registry.

```plaintext
docker push <image-name:tag>
```

# **docker exec**: Runs a command in a running container and goes inside a container.

```plaintext
docker exec -it <container-name or ID> bash
```

# **docker rm**: Removes one or more containers.

```plaintext
docker rm <container-name or ID>
```

# **docker rmi**: Removes one or more images.

```plaintext
docker rmi <image-name>
```

# **docker images**: Lists all the images on the local system.

```plaintext
docker images
```

# **docker ps**: Lists all running containers.

```plaintext
docker ps
```

# **docker logs**: Fetches the logs of a container.

```plaintext
docker logs <container-name or ID>
```

# **docker inspect**: Returns low-level information on a container or image.

```plaintext
docker inspect <container-name or ID>
```

## Docker Volume:

# **docker volume create**: Create a volume

```plaintext
docker volume create <volume-name>
```

# **docker volume ls**: List volumes

```plaintext
docker volume ls
```

# **docker volume inspect**: Display detailed information on one or more volumes

```plaintext
docker volume inspect <volume-name>
```

# **docker volume rm**: Remove one or more volumes

```plaintext
docker volume rm <volume-name>
```

# **docker volume prune**: Remove all unused volumes

```plaintext
docker volume prune
```

### **INFO & STATUS**

Show the log of a container

```plaintext
#docker logs CONTAINER
docker logs web
```

Show the stats of a running container

```plaintext
docker stats
```

Show the process of container

```plaintext
#docker top CONTAINER
docker top web
```

Show the installed docker version

```plaintext
docker version
```

Get the details info of Docker

```plaintext
#docker inspect NAME
docker inspect web
```

Show all modified files in a container

```plaintext
#docker diff conatiner
docker diff web
```

Show the mapped port of a container

```plaintext
#docker port CONATINER
docker port web
```

### **Builder Main Commands**

![Builder Main Commands](https://raw.githubusercontent.com/sangam14/dockercheatsheets/master/dockercheatsheet7.png align="left")

### **Docker-compose**

```plaintext
# docker-compose.yml
version: '2'

services:
  web:
    build:
    # build from Dockerfile
      context: ./Path
      dockerfile: Dockerfile
    ports:
     - "5000:5000"
    volumes:
     - .:/code
  redis:
    image: redis
```

* # **docker-compose up**: Create and start containers
    
    ```plaintext
    docker-compose up
    ```
    
    # **docker-compose ps**: List containers
    
    ```plaintext
    docker-compose ps
    ```
    
    # **docker-compose down**: Stop and remove containers, networks, images, and volumes
    
    ```plaintext
    docker-compose down
    ```
    
    # **docker-compose logs**: Show logs
    
    ```plaintext
    docker-compose logs <service>
    ```
