GNU/Linux >> Znalost Linux >  >> Linux

Jak používat místní docker obrázky s Minikube?

Poznámky:

  • Tato odpověď není omezena na minikube!

  • Pokud chcete vytvořit registr na minikube's Docker pak spusťte eval $(minikube docker-env) nejprve (pro vytvoření docker dostupné na terminálu hostitelského počítače).
    Jinak zadejte do virtuálního počítače pomocí minikube ssh a poté pokračujte podle následujících kroků

  • v závislosti na vašem operačním systému minikube automaticky připojí vaši domovskou cestu k virtuálnímu počítači.

  • jak řekl Eli, budete muset přidat místní registr jako nezabezpečený, abyste mohli používat http (nemusí platit při použití localhost, ale platí, pokud používáte místní název hostitele)
    Nepoužívejte http v produkci, snažte se věci zabezpečit.

Použijte místní registr:

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

Nyní svůj obrázek označte správně:

docker tag ubuntu localhost:5000/ubuntu

Všimněte si, že localhost by měl být změněn na název DNS počítače, na kterém běží kontejner registru.

Nyní vložte svůj obrázek do místního registru:

docker push localhost:5000/ubuntu

Měli byste být schopni jej vytáhnout:

docker pull localhost:5000/ubuntu

Nyní změňte svůj yaml soubor tak, aby používal místní registr.

Přemýšlejte o připojení svazků na vhodné místo, aby obrazy zůstaly v registru.


Jak popisuje příručka, můžete znovu použít démona Docker z Minikube s eval $(minikube docker-env) .

Chcete-li tedy použít obrázek bez jeho nahrání, můžete postupovat takto:

  1. Nastavte proměnné prostředí pomocí eval $(minikube docker-env)
  2. Vytvořte obrázek pomocí démona Docker z Minikube (např. docker build -t my-image . )
  3. Nastavte obrázek ve specifikaci podu jako značku sestavení (např. my-image )
  4. Nastavte imagePullPolicy na Never , jinak se Kubernetes pokusí stáhnout obrázek.

Důležitá poznámka: Musíte spustit eval $(minikube docker-env) na každém terminálu, který chcete použít, protože nastavuje pouze proměnné prostředí pro aktuální relaci shellu.


Co pro mě fungovalo na základě řešení od @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. Jak nainstalovat Jenkins pomocí Docker

  2. Jak sdílet obrázky Docker s ostatními

  3. Jak používat export s Pythonem na Linuxu

  1. Jak používám Vagrant s libvirt

  2. Jak používat obrázky, kontejnery a soubory Docker do hloubky

  3. Jak používat Docker Compose

  1. Jak používat příkaz Docker Inspect

  2. Jak upravit obrázky Docker

  3. Jak nakonfigurovat docker pro použití proxy