getestet unter: Linux, bash, minikube 1.11 und docker api version 1.40 (2020-07)
$ eval $(minikube -p minikube docker-env)
prüfen, ob wir in der Minikube-Docker-Umgebung sind
$ echo $MINIKUBE_ACTIVE_DOCKERD minikube
$ docker build -t my-local-image MyLocalImageDIR
prüfen, ob das image "im store" ist:
$ docker images | grep mv-local-image
$ kubectl run test1 --image=my-local-image --image-pull-policy=IfNotPresent
$ kubectl describe pod test1 | tail Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 93s default-scheduler Successfully assigned default/test1 to minikube Normal Pulled 92s kubelet, minikube Container image "my-local-image" already present on machine Normal Created 92s kubelet, minikube Created container test1 Normal Started 92s kubelet, minikube Started container test1
[...] spec: containers: - name: main image: my-local-image imagePullPolicy: IfNotPresent [...]
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
Seiten zum Thema kubernetes, docker und gcloud:
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.1909@unixwitch.de
weitere Tools / Spickzettel