minikubeでローカルのdocker imageを使う

  • 8
    いいね
  • 0
    コメント

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

ちゃんと立ち上がります。