Notas:
-
¡Esta respuesta no se limita a minikube!
-
Si desea crear el registro en Docker de minikube luego ejecuta
eval $(minikube docker-env)
primero (para hacerdocker
disponible en el terminal de la máquina host).
De lo contrario, ingrese en la máquina virtual a través deminikube ssh
y luego continúe con los siguientes pasos -
dependiendo de su sistema operativo, minikube montará automáticamente su ruta de inicio en la VM.
-
como dijo Eli, deberá agregar el registro local como inseguro para usar http (es posible que no se aplique cuando se usa localhost pero sí se aplica si se usa el nombre de host local)
No use http en producción, haga el esfuerzo de asegurar las cosas.
Utilice un registro local:
docker run -d -p 5000:5000 --restart=always --name local-registry registry:2
Ahora etiquete su imagen correctamente:
docker tag ubuntu localhost:5000/ubuntu
Tenga en cuenta que localhost debe cambiarse al nombre dns de la máquina que ejecuta el contenedor de registro.
Ahora envíe su imagen al registro local:
docker push localhost:5000/ubuntu
Deberías poder retirarlo:
docker pull localhost:5000/ubuntu
Ahora cambie su archivo yaml para usar el registro local.
Piense en montar volúmenes en la ubicación adecuada para conservar las imágenes en el registro.
Como se describe en el manual, puede reutilizar el demonio Docker de Minikube con eval $(minikube docker-env)
.
Entonces, para usar una imagen sin cargarla, puede seguir estos pasos:
- Establecer las variables de entorno con
eval $(minikube docker-env)
- Cree la imagen con el demonio Docker de Minikube (p. ej.,
docker build -t my-image .
) - Establezca la imagen en la especificación del pod como la etiqueta de compilación (p. ej.,
my-image
) - Establecer el
imagePullPolicy
aNever
, de lo contrario, Kubernetes intentará descargar la imagen.
Nota importante: Tienes que ejecutar eval $(minikube docker-env)
en cada terminal que desee usar, ya que solo establece las variables de entorno para la sesión de shell actual.
Lo que funcionó para mí, basado en la solución 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