docker
docker-for-mac

Dockerチュートリアルをやってみた(2章後半〜3章前半)

前回の続き

docker login
dockerIDとパスワードでログインできます。

タグをつける

タグはオプションだけと強く推奨されるとのこと。

$ docker tag friendlyhello kugyu10/get-started:part2

これで前回作ったコンテナにタグ(名前)がついた。

Pushする

# docker imageの確認
$ docker image ls
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
kugyu10/get-started   part2               8543f6131f0c        24 hours ago        132MB
friendlyhello         latest              8543f6131f0c        24 hours ago        132MB
<none>                <none>              e3ec34abe801        24 hours ago        120MB
python                2.7-slim            02ca219cf841        2 weeks ago         120MB

# さっきタグつけたイメージをpushする
$ docker push kugyu10/get-started:part2
The push refers to repository [docker.io/kugyu10/get-started]
4300848e2cbd: Pushed 
757f50f4057d: Pushed 
e2806e443186: Pushed 
7dd909bc1884: Mounted from library/python 
13fd5e03bfb3: Mounted from library/python 
28a70ee9f822: Mounted from library/python 
9c46f426bcb7: Mounted from library/python 
part2: digest: sha256:5c7f59a1de25d703195372f3cfee9ab71a181c7267463db72015a647d2005918 size: 1787

んん?コレでDockerImageを公開できたってことでいいの?

dockerHub

名前の通り、GitHubのdocker版

kugyu10のdockerHub
https://hub.docker.com/u/kugyu10/

あ、なんかできてた。
pullコマンドも書いてあるし、これで公開できたってことだと思う。

コレをWindowsにpullしてdocker-for-Windowsとかで
起動してPython環境を用意することもできるってことだね。
試してないけど。

タグをつけたコンテナを起動

$ docker run -p 4000:80 kugyu10/get-started:part2
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)


これで2章は終了。3章へ。サクサクだね。

2章までのおさらい。
あくまでぼくの現時点の理解なので間違いあるかも。

docker使うと、コンテナって単位で環境を用意できる。
VMと違ってOSのインスコからやらなくていいのでお手軽。
マシンリソース的にもいいらしい。
「それお前のOSには対応しないねん」問題も起きにくい。

それでいて、環境は別に作れるので、
昔はよくあった「Ruby 2.3系と 2.4系の共存がややこしいのねん問題」とか
現在でもよくある「テスト環境と本番環境と環境が違いすぎてあんまテストになってないねん問題」
ある程度解消できる。

コンテナってのは、docker imageと呼ばれるものをrunすることで立ち上がる仮想環境。
imageは、dockerfile と REQUIREMENTS.txt とその他必要ファイルをビルドして作れる。

imageはdockerHubで公開できる。

オレオレ開発環境もimageをdockerHubで持っておけば
いつPCが水没しても安心!!
あわてて用意した代替機にdocker用意して、イメージpullしてコンテナ起動すれば
あっという間にあなた好みの開発環境が用意できるぜ!

なるほど便利やん。
もう2章の時点で、dockerしない理由が見当たらないんだけど。

なんでうちの会社Gitもdockerも知らないの?

第3章 サービス

サービスとは本番環境で動くコンテナのことで
どれがどのポートで動くかとか、どのくらいの数のコンテナレプリカを動かすのかとか、
スケーリングどうしようとかを厳密にすることができるらしい。

コンテナが「docker image」で定義されたように、
サービスも「docker-compose.yml」で設定できるらしい。

このdocker-compose.ymlをコピペして、自分のタグに書き直したところで今日は終了。