$ docker build -t my-local-image MyLocalImageDIR
prüfen, ob das image "im store" ist:
$ docker images | grep mv-local-image
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 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
Z.B. als Image Repository für einen kubernetes-Cluster bei Google.
Voraussetzung:
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
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.
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
docker images purge
Vorher noch mal tief nachdenken, ob da eventuell noch Daten drauf rumliegen und vorher retten
docker volume prune
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.
Seiten zum Thema kubernetes, docker und gcloud:
Dockerfile
auf Syntaxfehler (und andere Probleme) prüfen.
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.21@unixwitch.de
weitere Tools / Spickzettel