# 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/>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dailyjournal.gitbook.io/cloud-computing/services/docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
