k8sクラスタを試作してる段階では、アプリのdockerイメージをいちいちprivate registryにpushしたりするのは面倒です。
minikubeを使ってる場合、docker buildだけしてローカルのimageを簡単に扱えるのでメモ。
環境
- Mac OS X 10.11.6
- minikube version: v0.14.0
- Docker version 1.12.5 (Docker for Mac)
やり方
1. minikube VM上のdockerを使うよう設定
$ eval $(minikube docker-env)
これでDOCKER_TLS_VERIFY, DOCKER_HOST, DOCKER_CERT_PATH, DOCKER_API_VERSION
が設定される。
2. dockerイメージをbuild
タグはlatest
以外にする必要があることに注意。でないと、k8sはregistryからイメージをpullしてこようとしてしまいます。
(http://kubernetes.io/docs/getting-started-guides/minikube/#reusing-the-docker-daemon)
$ echo "FROM nginx" >> Dockerfile
$ docker build -t example/nginx:v1.0 .
3. minikubeでPodを起動
example.yaml
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: nginx
image: "example/nginx:v1.0"
imagePullPolicy: IfNotPresent
imagePullPolicy: IfNotPresent
がポイントです。
このようなPodを定義してcreateすると、
$ kubectl create -f example.yaml
pod "example" created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
example 1/1 Running 0 17s
ちゃんと立ち上がります。