Imagem Docker local no minikube


Para iniciar um Pod, o Kubernetes primeiro baixa a Imagem Docker de algum registry, que por padrão, geralmente é o Docker Hub.

Porém, para testes em ambiente local, durante o processo de desenvolvimento, pode ser que você queira subir rapidamente um Deployment, e ver seus Pods funcionando ou não xD, sem precisar fazer push e pull da Imagem para o registry toda hora.

Neste post, mostro como usar uma Imagem local em um Cluster minikube.

Reutilizando o Docker Daemon

Para não precisar fazer push da Imagem em um registry, podemos reutilizar o Docker Daemon do minikube, e fazer o build direto nele. Podemos fazer isso com o comando docker-env.

Rode o comando:

eval $(minikube docker-env)

Agora essa aba do seu terminal estará se comunicando com o Docker Daemon do minikube.

Com isso, você pode rodar um docker build e sua Imagem será criada no ambiente do minikube.

docker build -t my-app:latest .

E no arquivo YAML do seu Deployment / Pod, fica algo assim:

containers:
- name: my-app
  image: my-app:latest
  imagePullPolicy: Never

Aqui atente-se ao uso da opção imagePullPolicy. Precisamos passá-la como Never, para que o Kubernetes não vá tentar buscar a imagem em um registry remoto.

Atenção! Quando não for mais usar o Docker Daemon do minikube, lembre-se de voltar ao seu host padrão. Para isso, rode o seguinte comando:

eval $(minikube docker-env -u)

Referências