細菌培養とエンジニアリング

細菌研究からエンジニアへ転向した人のブログ

Docker Hubにイメージを上げてみる

2019/08/29 記事更新(imageからpushする方法を追記しました)
こんにちは。 先日、こんな記事を書きました。

kaedem-dev.hatenablog.com

これ自体、自分としてはまだまだ未完なので、Dockerを学び直して出直したいところです。
飲みながら、この記事の話をしていたのですが、
「せっかくならDocker Hubにあげなよ」と言われたので、試しに上げてみることにしました。

事前に必要なこと

おそらく、Dockerを使う人はほとんど登録しているかと思うのですが、
Docker Hubへの登録が必要になります。
済ませている人は次の項目にいきましょう。

今回使うもの

今回使うリポジトリはこちらになります。
kaedemalu/tf_alpha2.0
(今後はゆるゆるとアップデートするのでお待ちください)

イメージを作る

こちらのリポジトリをクローンして、READMEに書いてあるコマンドを一通り打ち込んでください。
打ち込んだあとは、別タブで以下のコマンドを入力して、コンテナがあるか確認してください。

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
1af3bcfa251d        tensor-alpha        "bash"              12 seconds ago      Up 11 seconds       0.0.0.0:8888->8888/tcp   zealous_heyrovsky

CONTAINER IDとかところどころ違うところはあるとは思いますが、だいたいこのように出力されていれば一旦大丈夫です。
上のコマンドを打ったシェルでまた以下のコマンドを打って、イメージの作成を行います。

$ docker container commit 1af3bcfa251d kaedemalu/tensorflow:2.0_alpha
sha256:8a121750495d44ee91f8db8c700171606cffd24bae466849a5341629f436f2a9

sha256から始まるものが出力されたと思います。
なのでこれでイメージがあるか確認します

$ docker image ls
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
kaedemalu/tensorflow   2.0_alpha           8a121750495d        57 seconds ago      1.22GB

ちゃんとイメージが作成されていました。
良い感じ。
(でもサイズが重いんだよね、もっと軽くしたい)

Docker Hubにpushする

さて、この記事のミソかもしれないDocker Hubへのpushのときです。
pushする前に上で登録したアカウントを使ってログインします。

$ docker login
Authenticating with existing credentials...
Login Succeeded

僕は少し昔に多分ログインしていたので、上みたいな結果でしたが、
遠くの記憶ではDocker Hub登録時のアカウント名とパスワードを聞かれたはず。
さて、ログインも完了したので、pushしていきます。

$ docker push kaedemalu/tensorflow:2.0_alpha
The push refers to repository [docker.io/kaedemalu/tensorflow]
b7995ea98055: Pushed
a147495ba5e4: Pushed
be4abbc4e820: Pushed
ebe897fdbd91: Pushed
23bcd76a34dc: Pushed
b57c79f4a9f3: Mounted from library/ubuntu
d60e01b37e74: Mounted from library/ubuntu
e45cfbc98a50: Mounted from library/ubuntu
762d8e1a6054: Mounted from library/ubuntu
2.0_alpha: digest: sha256:f1afa3fce8bb65356ddf3c82452b24001dc4cec33785887b0e58287e01d6f977 size: 2205

こんな感じでpushできたみたいなので、Docker Hubで自分のページに行ってみましょう。

f:id:kaedemalu:20190409002224p:plain
Docker Hub push後

しっかりアップされていましたね!

imageからpushする方法(追記内容)

docker build まで済ませてください

タグをつける

Dockerfileやdocker-compose.yamlからbuildできたらimageに対してtagをつけます。
tagをつける前のimageの状況としてはこんな感じ

$ docker image ls | grep tensor-alpha
tensor-alpha                     latest              b54653024c82        3 months ago        1.21GB

tagをつけていきます。

$ docker tag tensor-alpha:latest kaedemalu/tensorflow:2.0_alpha

これでtagをつけられたので確認してみます。

$ docker image ls | grep tensorflow
kaedemalu/tensorflow             2.0_alpha           b54653024c82        3 months ago        1.21GB

できていそうですね!
それでは、Docker Hubにpushしましょう。

$ docker push kaedemalu/tensorflow:2.0_alpha

あとは、Docker Hubにimageがあるか確認しましょう。

余談と新たな発見

途中、以下の記事を参考にさせていただいたのですが、そんなこともできるのかと。 DockerImageをDockerHubに登録の仕方
GitHubとの連携できるのは流石に発見でした。
インフラエンジニアにもGithubを草原にできるチャンスが到来したことを夜中の12:30に確信しました。
もちろん登録しました。
僕の書くべきところは書いたので、Githubとの連携は皆さんもリンクを参考にしてみてください。

もう一つDjangoのDockerのリポジトリあるけど、あれ、docker-compose使ってんじゃん......。↓
kaedemalu/django-maria