CLI Images¶
Wenn wir uns später die gesamte Nutzung der Technik erarbeitet haben, dann werden die beiden zentralen Beisteine für die Umsetzung (Image + Container) noch deutlicher.
Docker Image command CLI¶
Für den Anfang will ich hier eine einfach erste Übersicht über die
docker image Kommandos bereitstellen.
Das Training findet wieder über praktische Anwendungen und Übungen statt.
Tabelle: Docker Kommandos für Images¶
docker image |
Funktionalität: Image verwalten |
|---|---|
… build |
neues Image erzeugen mittels Datei Dockerfile |
… history |
Build-History eines Images |
… inspect |
lokale Images analysieren |
… ls |
Images auflisten - klassisch |
… pull |
Image aus Registry herunterladen / bereitstellen |
… push |
Image in Docker Registry hochladen |
… rm |
Image löschen - klassisch: |
… save | load |
aus Images einen Tarball erzeugen und laden |
… tag |
Image-Namen bzw. Tag anpassen |
Aus diversen Ausarbeitungen und Unterlagen haben sich noch die folgenden Infos bewährt, die ich hier bereitstellen möchte.
Infos: docker pull¶
Wenn nur ein Imagename angegeben wird, dann wird das Image mit Tag :latest gepullt!
Images mit Tag:latest müssen nicht immer die aktuellsten Images sein!
Kompletter Aufruf: docker pull [OPTIONS] REGISTRY:REG-PORT/IMAGE:TAG|@DIGEST
Optionen: -a | --all-tags um alle Images(:tags) mit einem Imagenamen zu pullen (gesamtes Image-Repository)
Infos: docker image ls¶
Mit Option --no-trunc komplettere Ausgaben und -q für quiet, was einfach die (kurzen) IDs ausgibt!
Alle Images auflisten:
docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb <none> 2bdd97ca79d9 6 days ago 366MB
joebrandes/testwebserver latest 9ff70d3871d4 7 days ago 183MB
<none> <none> 7c54877665f7 7 days ago 183MB
<none> <none> 6a247201e8a3 7 days ago 183MB
<none> <none> aef9419d7b92 7 days ago 183MB
<none> <none> c21c0c4fe351 7 days ago 183MB
<none> <none> a3ff1c7635da 7 days ago 183MB
<none> <none> 2bd50cd1f5b1 7 days ago 86.7MB
<none> <none> 86e536f3da5c 7 days ago 86.7MB
hello-world latest fce289e99eb9 2 weeks ago 1.84kB
wordpress latest 9ec2fcdda9ef 2 weeks ago 420MB
mariadb latest 4f2e75647d2a 2 weeks ago 366MB
ubuntu 18.10 d4452947e3fa 2 weeks ago 73.7MB
ubuntu 18.04 1d9c17228a9e 2 weeks ago 86.7MB
alpine latest 3f53bb00af94 3 weeks ago 4.41MB
Die hier aufgelisteten none:none Images enstehen durch das
Layersystem von Images und belegen und verschwenden keinen Platz im System!
Problematisch sind Images die mit none:none bei normalem docker images (ohne -a) auftauchen:
Erinnerung: bei docker images bitte auf Plural achten!
Tipp
docker image ls -q bzw. docker image ls --quiet listet nur die IDs
auf und kann somit gut zum Pipeling für andere Docker-Aufrufe genutzt werden!
Dangling Images - verwaiste Einträge¶
Finden von Dangling Images: docker images -f "dangling=true"
Löschen / Aufräumen: per Filtern oder mit docker image prune
docker images -f "dangling=true" -q | xargs -n1 docker rmi -f
# oder einfach mit:
docker image prune
Infos: docker image inspect¶
Formatierte Ausgaben mit Parameter --format
docker inspect --format='{{.Config.Cmd}}' alpine:latest
[/bin/sh]
# oder einfacher mit:
docker inspect alpine:latest | grep -i Cmd
Das lässt sich auch wieder aufbereiten (Tool jq):
docker image inspect alpine:latest | jq -CS # C Color; S sortiert
docker image inspect alpine:latest | jq -CS .[0].Config.Cmd # Zugriff auf Array
[
"/bin/sh"
]
Die Ausgabe von Docker Kommandos ist auch über Go-Templates möglich: (Go Templates )
docker image inspect alpine:latest --format '{{.Config.Cmd}}'
[/bin/sh]
docker image inspect alpine:latest --format '{{json .Config.Env}}' | jq
[
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
]
Diese Ausgabeformate lassen sich auch bei anderen cmd-Techniken nutzen (siehe docker container ls ...).
Infos: docker save | load¶
Speichert Images in einem Tarball - nicht mit dem Export / Import von Containern verwechseln
docker save -o ~/alpine-out.tar alpine
tar -tvf alpine-out.tar
-rw-r--r-- 0/0 1511 2018-12-21 01:21 3f53bb00af943dfdf81...129d57d5991.json
drwxr-xr-x 0/0 0 2018-12-21 01:21 a21b1050952cdc06771...57cae64904b/
-rw-r--r-- 0/0 3 2018-12-21 01:21 a21b1050952cdc06771...57cae64904b/VERSION
-rw-r--r-- 0/0 1184 2018-12-21 01:21 a21b1050952cdc06771...57cae64904b/json
-rw-r--r-- 0/0 4672000 2018-12-21 01:21 a21b1050952cdc06771...57cae64904b/layer.tar
-rw-r--r-- 0/0 202 1970-01-01 01:00 manifest.json
-rw-r--r-- 0/0 89 1970-01-01 01:00 repositories
In layer.tar befindet sich das eigentliche Image mit den Ordnerstrukturen /, /bin, /usr, …
Diese Sicherung lässt sich dann auf einem anderen Rechner wieder loaden.