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:
- Nastavte proměnné prostředí pomocí
eval $(minikube docker-env)
- Vytvořte obrázek pomocí démona Docker z Minikube (např.
docker build -t my-image .
) - Nastavte obrázek ve specifikaci podu jako značku sestavení (např.
my-image
) - Nastavte
imagePullPolicy
naNever
, 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