Dockerイメージのビルドを、K8s環境やDocker環境下でやろうと思うと、DinD などが必要でありちょっと運用が面倒でした。
そんなさなか、Kaniko なるものを見つけました。
Kanikoは、Dockerfile を直接読んで、Docker build と同じ動きをすることでイメージを作成できるので、DinD環境を使わずDockerイメージのビルドができそうです。
利用も簡単で、KanikoのExecutorがイメージで提供されているので、これを利用するのがよさそうです。
ミニマムに利用してみたいと思います。
今まで docker build をしていた要領でDockerfileのあるディレクトリに移動して…
docker run -v `pwd`:/workspace gcr.io/kaniko-project/executor:latest --no-push
で、ビルドができます。–no-push を指定しているので、ビルドだけして、push はしていません。ビルドできるかテストするだけなら、これで実験できます。
検索してみつかる手順だと、–context を指定したり、–dockerfileを指定したりする手順が見つかりますが、これらにはデフォルト値(それぞれ、”/workspace”, “Dockerfile”)があるので、利用していきます。シンプルイズベスト。
でもこれでは面白くないので、Docker Hub に push してみます。
Docker Hub は認証が必要なので、あらかじめ、config.json を作成して、マウントさせていきます。
USER=username
PASS=password
echo "{\"auths\":{\"https://index.docker.io/v1/\":{\"auth\":\"$(echo -n "${USER}:${PASS}"|base64)\"}}}" > ./config.json
docker run -v `pwd`/config.json:/kaniko/.docker/config.json -v `pwd`:/workspace gcr.io/kaniko-project/executor:latest \
--destination=user/image-name:tag
実際は、config.json を組み込んだオレオレkanikoイメージを作成するなど、運用は工夫した方が良さそうですが・・・まずは動作確認ということで。
コメント