User Tools

Site Tools


de:sysadmin:tools:docker

Docker Spickzettel

Docker-Image bauen

$ docker build -t my-local-image MyLocalImageDIR

prüfen, ob das image "im store" ist:

$ docker images | grep mv-local-image

Docker Images zu Docker Hub hochladen

Voraussetzung: Account bei Dockerhub anlegen: https://hub.docker.com/

$ docker login hub.docker.com

Benutzername und Passwort eingeben. (Hier im Beispiel meineigeneraccount).

Dann von dem Image, welches hochgeladen werden soll, die Image ID herausfinden

$ docker images my-local-image
REPOSITORY      TAG     IMAGE ID        CREATED      SIZE
my-local-image  latest  4f58ca42107d    3 hours ago  5.6MB

lokal ein Tag mit dem Namen machen, den das Image remote haben soll

$ docker tag 4f58ca42107d meineigeneraccount/my-remote-image:0.001

Docker-Image hochladen, das Projekt (hier projekt1repo) wird angelegt, wenn es noch nicht vorhanden ist:

$ docker push meineigeneraccount/projekt1repo:0.001

Bei einem unbezahlten Docker-Hub-Account kann man ein privates Repository einrichten, alle anderen sind öffentlich einsehbar.

Docker Image lokal als TAR-File ablegen

$ docker save my-local-image > my-docker-image.tar

Docker-Tar-File einlesen

$ docker load --input my-docker-image.tar
Loaded image: my-local-image:latest

Google Docker Registry verwenden

Z.B. als Image Repository für einen kubernetes-Cluster bei Google.

Voraussetzung:

  • Man braucht einen GCP Account und ein GCP Projekt das bezahlt wird (hier mygcpproject).
  • Man sollte mit diesem GCP Account eingeloggt sein (siehe: gcloud - Google Cloud Spickzettel).

Die Docker Registry kann man sich im Webbrowser ansehen:

https://console.cloud.google.com/gcr/images/mygcpproject

Es gibt die Möglichkeit, diese Docker-Registry auf public oder private zu stellen.

Wenn man schon eine andere Docker Registry verwendet hat, vorher ein Backup von $HOME/.docker/config.json machen, das wird hier leider überschrieben :-/

Ich verwende nur eu.gcr.io (wennn man eu.gcr.io weglässt, werden per Default alle eingebaut):

$ gcloud auth configure-docker eu.gcr.io 
Adding credentials for: eu.gcr.io
After update, the following will be written to your Docker config file
 located at [/home/meinuser/.docker/config.json]:
 {
  "credHelpers": {
    "eu.gcr.io": "gcloud"
  }
}

Do you want to continue (Y/n)?  y

Docker configuration file updated.

Image mit einem Namen (Tag) versehen und hochladen:

$ docker tag 4f58ca42107d eu.gcr.io/mygcpprojekt/my-remote-image:0.001

$ docker push eu.gcr.io/mygcpprojekt/my-remote-image

Hilfe, Docker hat meinen Festplattenplatz aufgefressen

Beim Arbeiten mit Docker verbraucht man ganz schnell ganz viel Festplattenplatz: Instanzen die gestoppt auf neuen (nie wiederkehrenden) Einsatz warten, Images die man so bald nicht wieder verwendet (und bei Bedarf ja wieder neu bauen oder aus dem Netz ziehen könnte) und auch virtuelle Festplatten-Volumes, deren Inhalt nicht mehr gebraucht wird. Spätestens wenn die Festplatte zu 100% voll ist (oder das Monitoring schon vorher schimpft), lohnt sich das alles mal wegzuräumen.

Gestoppte Docker Instanzen ganz entfernen

Erst mal nachsehen, was läuft (Up) und lief (Created, Exited):

CONTAINER ID  IMAGE             COMMAND                 CREATED      STATUS                  PORTS                                      NAMES
aa9cedf6ad6b  jbrya:v002        "/bin/sh /docker/ent…"  4 days ago   Exited (0) 2 days ago   993/tcp                                    jbry2
19668d58b32c  jbrya:v003        "/bin/sh /docker/ent…"  3 days ago   Exited (0) 2 days ago   993/tcp, 995/tcp                           jbry3
5e9aa9f85161  ubuntu            "df"                    2 weeks ago  Exited (0) 2 weeks ago                                             ubu
62917c1a7073  debian            "df"                    5 weeks ago  Exited (0) 5 weeks ago                                             deb
f05a67b51253  dokuwiki:latest   "/init"                 5 days ago   Up 5 days               0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp dokuwiki
eecd30e031fe  mariadb           "docker-entrypoint.s…"  11 hours ago Exited (1) 11 hours ago                                            db01
b98f65c7f738  network-multitool "/bin/sh /docker/ent…"  2 days ago   Up 2 days               80/tcp, 443/tcp, 1180/tcp, 11443/tcp       multitool

Einzelne gestoppte Docker-Instanzen entfernen (mit ID oder Name):

$ docker rm 5e9aa9f85161
$ docker rm deb

Alle gestoppten Docker-Instanzen entfernen:

docker container prune

Beispiel:

$ docker container prune

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
aa9cedf6ad6b96f50581fa248ece67e16a6b0e782d94a525bddcbb14a245d6d7
19668d58b32c4ef4caf777394f90a4453d4804d3110a9cc3cfeebc0d6849da37

Total reclaimed space: 153.9MB

Nicht verwendete Docker-Images entfernen

docker images purge

Nicht verwendete Docker Volumes entfernen

Vorher noch mal tief nachdenken, ob da eventuell noch Daten drauf rumliegen und vorher retten :-)

docker volume prune

Einfach alles wegwerfen, was Docker momentan nicht braucht

Vorher: Die schöne neue Docker-Festplatte ist schon fast zur Hälfte voll

$ df -h /var/lib/docker
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb         98G   39G   55G  42% /var/lib/docker
$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y

Nachher:

$ df -h /var/lib/docker
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb         98G  6.5G   87G   7% /var/lib/docker

Mit dem Aufruf docker system prune --volumes werden auch die Docker Volumes entfernt, die gerade nicht mehr verwendet werden.

de/sysadmin/tools/docker.txt · Last modified: 2022-08-07 22:46 by hella

Page Tools

Mastodon Twitter