# Docker

{% embed url="<https://www.docker.com/>" %}

Image = application + dependencies

Containers - An instance based on an image that runs on a "Docker Host"

### Lifecycle Commands

* Create a container (without starting it):

```
docker create [IMAGE]
```

* Rename an existing container

```
docker rename [CONTAINER_NAME] [NEW_CONTAINER_NAME]
```

* Run a command in a new container

```
docker run [IMAGE] [COMMAND]
```

`-d` - detached application will run in background and will not show any console output

`-p` - publish port \<host>:\<container>

\--name - optional

-v - mount a volume

\--link - communicate between containers

* Remove container after it exits

```
docker run --rm [IMAGE]
```

* Start a container and keep it running

```
docker run -td [IMAGE]
```

* Start a container and creates an interactive bash shell in the container

```
docker run -it [IMAGE]
```

* Create, Start, and run a command inside the container and remove the container after executing command.

```
docker run -it-rm [IMAGE]
```

* Execute command inside already running container.

```
docker exec -it [container]
```

* Delete a container (if it is not running)

```
docker rm [CONTAINER]
```

* Update the configuration of the container

```
docker update [CONTAINER]
```

### Starting and Stopping Containers <a href="#starting-and-stopping-containers" id="starting-and-stopping-containers"></a>

* Start Container

```
docker start [CONTAINER]
```

* Stop running Container

```
docker stop [CONTAINER]
```

* Stop running Container and start it again

```
docker restart [CONTAINER]
```

* Pause processes in a running container

```
docker pause [CONTAINER]
```

* Unpause processes in a running container

```
docker unpause [CONTAINER]
```

* Block a container until others stop

```
docker wait [CONTAINER]
```

* Kill a container by sending a SIGKILL to a running container

```
docker kill [CONTAINER]
```

* Attach local standard input, output, and error streams to a running container

```
docker attach [CONTAINER]
```

### Docker Image Commands <a href="#docker-image-commands" id="docker-image-commands"></a>

* Create an image from a tarball

```
docker import [URL/FILE]
```

* Create an image from a container

```
docker commit [CONTAINER] [NEW_IMAGE_NAME]
```

* Load an image from a tar archive or stdin

```
docker load [TAR_FILE/STDIN_FILE]
```

* Save an image to a tar archive

```
docker save [IMAGE] > [TAR_FILE]
```

### Docker Container And Image Information <a href="#docker-container-and-image-information" id="docker-container-and-image-information"></a>

* List real-time events from a container

```
docker events [CONTAINER]
```

* Show port mapping for a container

```
docker port [CONTAINER]
```

* Show running processes in a container

```
docker top [CONTAINER]
```

* Show live resource usage statistics of container

```
docker stats [CONTAINER]
```

* Show changes to files (or directories) on a filesystem

```
docker diff [CONTAINER]
```

* List all images that are locally stored with the docker engine

```
docker [image] ls
```

* Show the history of an image

```
docker history [IMAGE]
```

### Network Commands <a href="#network-commands" id="network-commands"></a>

* List networks

```
docker network ls
```

* Remove one or more networks

```
docker network rm [NETWORK]
```

* Show information on one or more networks

```
docker network inspect [NETWORK]
```

* Connects a container to a network

```
docker network connect [NETWORK] [CONTAINER]
```

* Disconnect a container from a network

```
docker network disconnect [NETWORK] [CONTAINER]
```

{% embed url="<https://docs.docker.com/get-started/docker_cheatsheet.pdf>" %}

{% embed url="<https://www.docker.com/blog/docker-init-initialize-dockerfiles-and-compose-files-with-a-single-cli-command/>" %}
