docker imageをdocker hubに公開する方法

docker imageをdocker hubに公開する方法についての小ネタです。

お仕事でdocker imageを作成して公開必要があったのですが、やり方よく知らなかったので、同僚のdocker得意なエンジニアに教えてもらいました。

docker imageを作成する

まずは、docker imageを作成します。

今回はCircleCI 2.0で使うフロントエンドビルド用のimageを作成するため、ベースのimageにcircleci/node:8.9を利用しました。

BuildDockerfile

1
2
3
4
5
6
7
8
9
FROM circleci/node:8.9

ENV PATH /home/circleci/.local/bin:${PATH}

# Install AWS CLI
RUN sudo apt-get install python-dev
RUN sudo curl -O https://bootstrap.pypa.io/get-pip.py
RUN python get-pip.py --user
RUN pip install awscli --upgrade --user

imageファイルができたら、docker imageをビルドします。

1
$ docker build -f BuildDockerfile .

ビルドが終わったらimageのリストを表示して、image idを覚えておきます。今回の場合は、一番上にある<none>が作成したimageです。

1
2
3
4
5
6
7
$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 680c58dbd0f9 29 seconds ago 986MB
circleci/node 8.9 66a65e08d915 9 hours ago 894MB
codeprep/sqlite latest 0c3ec62e9c37 7 days ago 13.6MB
...

直前に作ったimageであれば、一番上に表示されると思います。

docker imageをテストする

docker imageをテストします。

テストの方法は「docker imageの中身をデバックする方法」にあるとおりimageの中に入ってデバックします。

image名には、上で取得したimage idを指定します。

dockerにログインする

ここからは、imageを公開するための準備です。

docker hubのアカウントでdockerにログインしておきます。

1
2
$ export DOCKER_ID_USER="mitsuruog"
$ docker login

DOCKER_ID_USERにはdocker hubにユーザー名を設定しておきます。あとで使います。(なくても大丈夫ですが。。。)

docker imageにタグをつける

docker imageにタグ(名前)を付けます。

1
$ docker tag [image name] $DOCKER_ID_USER/cool-build-frontend

image nameには、上で取得したimage idを指定し、cool-build-frontendに好きな名前を設定します。

タグつけが終わったらimageのリストを表示してimageにタグが付いていることを確認します。

1
2
3
4
5
6
$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
mitsuruog/cool-build-frontend latest 680c58dbd0f9 2 minutes ago 986MB
circleci/node 8.9 66a65e08d915 9 hours ago 894MB
codeprep/sqlite latest 0c3ec62e9c37 7 days ago 13.6MB

docker imageを公開する

最後にimageをdocker hubに公開します。

1
$ docker push mitsuruog/cool-build-frontend

結果は、こんな感じです。

まとめ

ほぼ、自分用のメモですね。

手順については他にも色々あると思うので、あくまでやり方の1つとして参考してください。