前回の続き
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をコピペして、自分のタグに書き直したところで今日は終了。