tl;dr
$ env $(minikube docker-env) $ cd path/to/build $ docker build -t local/myapp:1.0.0 $ minikube kubectl -- create deployment test-app --image=local/myapp:1.0.0
ドキュメントを一通り読めばよかった
minikubeはproduction useに適さないらしいしkubernetesの練習にと試しているところだったのでdockerイメージもお試しのオレオレイメージを使いたかった。
でもkubectlでイメージ指定するときはローカルで普段使っているdockerイメージが参照できなかった。
さらっとググっただけではビルドしてタグ付けてpushしましょうという記事が出てくる。ググり方が悪かった。
前提はminikubeのエンジンをdockerにしている
minikubeが用意したdockerエンジンを参照して、そのエンジンが見るイメージ置き場にイメージを用意すればよい
minikubeが用意したdockerエンジンを使うにはminikubeに聞けばよい
podmanを使っている場合は podman-envでよいはず
$ minikube docker-env export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://127.0.0.1:495156" export DOCKER_CERT_PATH="path/to/.minikube/certs" export MINIKUBE_EXISTING_DOCKER_HOST="original/docker/host" export MINIKUBE_ACTIVE_DOCKERD="minikube"
これをbashからenvで読み込めば今使ってるセッションはminikubeが用意したdockerエンジンを参照するようになる (環境変数DOCKER_HOST
による)
$ env $(minikube docker-env)
その状態で使いたいDockerfileをいつも通りビルドしてタグ付けしてあげれば、minikubeのkubectlで利用できるイメージになる。
docker build -t myimages/some-cool-image:latest .