# Docker

## docker install

```
curl https://get.docker.com | bash
```

## Historie eines Images abrufen

```
docker image history ubuntu
```

Full (no trucated)

```
docker image history --no-trunc ubuntu
```

## Übersicht über alle lokalen Images

`docker image ls` bzw. `docker images`

## docker commit

Allows saving changes made in a Docker container

## Kontrollieren der genutzten Volumes

```
docker volume ls
```

## Aufräumen von ungenutzten Volumes

```
docker volume prune
```

## Nur den Mountpoint des Volumes anzeigen

```
docker volume inspect --format '{{ .Mountpoint }}' <volume>
```

## Anzeigen der laufenden Mountpoints eines Dockercontainers

1. mittels `docker ps` die ID oder den Namen identifizieren
2. `docker inspect -f '{{ .Mounts }}' <id/Name>`

## Löschen von Containern, Images, Volumes uns Netzwerke

### Löschen von ungenutzten Containern (die unreferenziert (also nicht mit einem Container verknüpft) sind)

```
docker system prune
```

### Löschen auch von angehalteten Containern und nichtverwendeten Images (nicht nur unreferenziert)

```
docker system prune -a
```

## Entfernen von Docker-Images

### Entfernen von einem oder mehreren spezifischen Images

Verwenden Sie den Befehl `docker images` mit dem Flag `-a`, um die ID der Images zu finden, die Sie entfernen möchten. Dadurch wird Ihnen jedes Image angezeigt, einschließlich dazwischenliegender Image-Ebenen. Wenn Sie die Images gefunden haben, die Sie löschen möchten, können Sie ihre ID oder ihr Tag `docker rmi` übergeben:

Auflisten:

```
docker images -a
```

Entfernen:

```
docker rmi <image-tag> oder <image-id>
```

### Entfernen von unreferenzierten Images

Docker-Images bestehen aus mehreren Ebenen. Unreferenzierte Images sind Ebenen, die keine Beziehung zu getaggten Images haben. Sie dienen keinem Zweck mehr und verbrauchen Festplattenspeicher.

**Anmerkung**: Wenn ein Image erstellt wird, ohne es mit einem Tag zu versehen, dann wird das Image in der Liste der unreferenzierten Images angezeigt, da es keine Zuordnung zu einem getaggten Image aufweist. Diese Situation kann man vermeiden in dem man beim Erstellen ein Tag angibt, sonst im Nachhinein das Image mittels `docker tag` mit einem Tag versehen.

Auflisten:

```
docker images -f dangling=true
```

Entfernen:

```
docker images purge
```

Entfernen von Images nach Muster Auflisten:

```
docker images -a |  grep "pattern"
```

Entfernen:

```
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
```

### Alle Images entfernen

Alle Docker-Images in einem System können mit `docker images -a` aufgelistet werden.

Auflisten:

```
docker images -a
```

Entfernen:

```
docker rmi $(docker images -a -q)
```

`-q` übergibt die Image-ID

https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes-de

### Ein Dockerimage sichern

```
docker save image

gzip <image.tar>
```

### Ein gesichertes Dockerimage einspielen

```
docker load -i <image.tar.gz>
```

## Im Container arbeiten

```
docker exec -it <id> bash
```