flask 実行環境をDocker で構築してwebappを走らせてみた その1

GW大してやることもないので、恥ずかしながら今まで使ったことのなかったDockerでそれっぽいことをやってみる。
Qiita 投稿初なので温かい目で見てやってください。

# **やりたいこと**
やろうとしてることは以下

- mac book pro にDocker をインストール 
- ubuntu + python(miniconda) + flask + sample webapp実行環境（image）をDocker fileから作成
- imageからcontainerを作成(webapp実行) 

※sample webapp はgithub上に作成して、cloneしてくる。

# **実行環境**
Mac Book Pro MacOS Sierra
# **1. Docker のインストール**
mac にdocker install する方法としてどうやら二つあるらしい。

1. Docker tool box 
2. Docker for mac

どちらもローカル上でDocker host を動かす方法なのだが、違いとしては、
Docker tool boxは、インストールすると同時にdocker machine　とVirtual Boxがインストールされ、virtual box上でDocker hostを動かすのに対し、
Docker for macはMacのネイティブの仮想環境（HyperKit）上にDocker hostが構築されるらしい。（簡単にいうと）
ってことなのでDocker for macでDockerをインストールする。

Docker for mac は以下からダウンロード
https://store.docker.com/editions/community/docker-ce-desktop-mac

普通のアプリケーションと同じように、インストーラーを実行すると以下のようなくそかわいいアイコンでインストールされる。
<img width="101" alt="スクリーンショット 2018-05-02 17.40.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/248369/a623c50d-4947-3a4f-f44c-17618d091106.png">

Docker はアイコンがかわいいから好き。


くそかわアイコンをダブルクリックで実行すると、ツールバーにクジラのアイコンが出現する。これで、Docker hostが起動している。

<img width="219" alt="スクリーンショット 2018-05-02 17.45.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/248369/c5061335-96e7-0f7d-067d-0babce8a9682.png">

コンソールを開いてdockerコマンドを叩いてみると。。。


```
XXXXXX-MacBook-Pro:~ XXXXXXX$ docker

Usage:	docker COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default
                           "/Users/yoshidatomoya/.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level
                           ("debug"|"info"|"warn"|"error"|"fatal")
                           (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "/Users/yoshidatomoya/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default
                           "/Users/yoshidatomoya/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default
                           "/Users/yoshidatomoya/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  checkpoint  Manage checkpoints
  config      Manage Docker configs
.
.
.

```


おおお動いた。

試しに、ubuntuのimageから、ubuntu containerを立ち上げてみる。
以下のコマンドを実行

```
docker run -it ubuntu
```

-it オプションをつけることによって立ち上げたcontainerを操作できる。  


```
XXXXXX-MacBook-Pro:~ XXXXXXX$ docker run -it ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
a48c500ed24e: Already exists 
1e1de00ff7e1: Already exists 
0330ca45a200: Already exists 
471db38bcfbf: Already exists 
0b4aba487617: Already exists 
Digest: sha256:c8c275751219dadad8fa56b3ac41ca6cb22219ff117ca98fe82b42f24e1ba64e
Status: Downloaded newer image for ubuntu:latest
root@5fa204eabf4f:/# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
root@5fa204eabf4f:
```


最新のubuntu 18.04のcontainerが立ち上がった。
初回は少し時間がかかったが2回目以降は即立ち上がった。
めちゃくちゃ便利。。。Vagrantとか使わなくなりそう。。。

今回はここまで。
次回は、Docker file を作成してwebapp 実行環境を構築します。