_log

備忘録

Dockerことはじめ

FlaskをDockerコンテナ上で起動させるところまで

インストール

Docker ToolBoxでインストール

環境変数

.zshrcに↓を追加

echo "eval $(docker-machine env default)" >> ~/.zshrc

ない場合はDockerQuickstartTerminal.appを都度叩く形になる? 参考までにない時に出るエラー

$ docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Get started with Docker Machine and a local VM - Docker

Command

オプション付コマンドを雑にメモ

最後に実行したコンテナのIDのみ表示

docker ps -l -q

Dockerfileからイメージを構築

docker build -t docker_sample .

イメージを起動して、exitしたらコンテナを壊す

docker run -it --rm docker_sample bash

コンテナの一括削除

docker rm `docker ps -a -q`

Dockerfile

サンプルとしてGit,Vim,Python関連

gist.github.com

--no-install-recommendはイメージを軽量にするためやっておいた方が良さそう

FlaskをDocker上で動かす

最低限で動かす

+ web
  - app.py
  - requirements.txt
- 

web/app.py Flaskのサンプル。ほぼhttp://flask.pocoo.org/より

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True, host=)

web/requirement/txt

Flask

docker-compose

docker-composeを使うと複数コンテナ管理をyamlで行うことができる 今回は複数使わないけど、こちらでやってみる

以下がdocker-composeが必要になった経緯が分かりやすい

docker-composeを使うと複数コンテナの管理が便利に - Qiita docker-compose.yml

web:
  build: ./web
  ports:
   - "5000:5000"
  volumes:
   - .:/code

いざup

$ docker-compose up

デフォルトのIPを以下で確認して、アクセスする(今回はhttp://192.168.99.100:5000/ )と「HelloWorld!」が表示される

$ docker-machine ip default
192.168.99.100

Tips

15 Docker Tips in 5 MinutesでTipsが紹介されている。例えばこんなalias

echo "alias dl='docker ps -l -q'" >> ~/.zshrc

雑感

永続化周りとか、構成管理系のツールとの組み合わせベストプラクティスとかどういうのが主流なのかな

開発環境として使ってみたかったけど、Vagrant+Ansibleとかでとりあえず良い気がしてきた

参考

Dockerのライフサイクルを理解するハンズオン資料