GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser les images docker locales avec Minikube ?

Remarques :

  • Cette réponse n'est pas limitée à minikube !

  • Si vous souhaitez créer le registre sur le Docker de minikube puis exécutez eval $(minikube docker-env) d'abord (pour faire docker disponible sur le terminal de la machine hôte).
    Sinon entrer dans la machine virtuelle via minikube ssh , puis passez aux étapes suivantes

  • en fonction de votre système d'exploitation, minikube montera automatiquement votre homepath sur la VM.

  • comme Eli l'a indiqué, vous devrez ajouter le registre local comme non sécurisé afin d'utiliser http (peut ne pas s'appliquer lors de l'utilisation de localhost mais s'applique si vous utilisez le nom d'hôte local)
    N'utilisez pas http en production, faites l'effort de sécuriser les choses.

Utilisez un registre local :

docker run -d -p 5000:5000 --restart=always --name local-registry registry:2

Maintenant taguez votre image correctement :

docker tag ubuntu localhost:5000/ubuntu

Notez que localhost doit être remplacé par le nom DNS de la machine exécutant le conteneur de registre.

Poussez maintenant votre image vers le registre local :

docker push localhost:5000/ubuntu

Vous devriez pouvoir le retirer :

docker pull localhost:5000/ubuntu

Modifiez maintenant votre fichier yaml pour utiliser le registre local.

Pensez à monter des volumes à l'emplacement approprié, pour conserver les images dans le registre.


Comme le manuel le décrit, vous pouvez réutiliser le démon Docker de Minikube avec eval $(minikube docker-env) .

Donc, pour utiliser une image sans la télécharger, vous pouvez suivre ces étapes :

  1. Définissez les variables d'environnement avec eval $(minikube docker-env)
  2. Construisez l'image avec le démon Docker de Minikube (par exemple docker build -t my-image . )
  3. Définissez l'image dans la spécification du pod comme la balise de construction (par exemple, my-image )
  4. Définir le imagePullPolicy à Never , sinon Kubernetes essaiera de télécharger l'image.

Remarque importante : Vous devez exécuter eval $(minikube docker-env) sur chaque terminal que vous souhaitez utiliser, car il ne définit que les variables d'environnement pour la session shell en cours.


Ce qui a fonctionné pour moi, basé sur la solution de @svenwltr :

# Start minikube
minikube start

# Set docker env
eval $(minikube docker-env)             # unix shells
minikube docker-env | Invoke-Expression # PowerShell

# Build image
docker build -t foo:0.0.1 .

# Run in minikube
kubectl run hello-foo --image=foo:0.0.1 --image-pull-policy=Never

# Check that it's running
kubectl get pods

Linux
  1. Comment j'utilise Vagrant avec libvirt

  2. Comment utiliser les images Docker, les conteneurs et les Dockerfiles en profondeur

  3. Comment utiliser Docker Compose

  4. Comment configurer docker pour utiliser le proxy

  5. Comment utiliser l'option --since avec la commande docker logs

Comment créer des images Docker avec un Dockerfile sur Ubuntu 18.04 LTS

Comment créer des images Docker avec un Dockerfile sur Ubuntu 20.04 LTS

Comment utiliser Docker Scan pour trouver des vulnérabilités dans vos images

Comment utiliser Docker Commit pour modifier les images de conteneur

Comment déployer CouchDB en tant que cluster avec Docker

Comment installer et utiliser Docker sur AlmaLinux 8