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イメージを作成するなど、運用は工夫した方が良さそうですが・・・まずは動作確認ということで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です