Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:k8s_und_docker_images

kubernetes & docker images

docker images lokal erzeugen und nach minikube pushen

getestet unter: Linux, bash, minikube 1.11 und docker api version 1.40 (2020-07)

Minikube Environment in die Shell "laden"

$ eval $(minikube -p minikube docker-env)

prüfen, ob wir in der Minikube-Docker-Umgebung sind

$ echo $MINIKUBE_ACTIVE_DOCKERD
minikube

docker-Image bauen

$ docker build -t my-local-image MyLocalImageDIR

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

$ docker images | grep mv-local-image

Zum Testen einen Pod direkt starten

$ 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 

Lokales Image in Deployment (oder StatefulSet) einbauen

    [...]
    spec:
      containers:
      - name: main
        image: my-local-image
        imagePullPolicy: IfNotPresent
    [...]

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 mygcpprojekt/my-remote-image:0.001

$ docker push eu.gcr.io/mygcpprojekt/my-remote-image
de/sysadmin/tools/k8s_und_docker_images.txt · Zuletzt geändert: 2020-08-12 17:20 von hella

Seiten-Werkzeuge

Mastodon Twitter