Docker 再入門2 2016

# 背景
ここは前回 [Docker 再入門1 2016](http://qiita.com/ohhara_shiojiri/items/98573b074185381d46c8) の続きになります。
最初のインストール方法は前回の記事で紹介してます。また基本的なコマンド例は以下のSlideShareの資料を参考にしてください。

# Docker入門(再掲)
基本的なDockerの仕組みは変わらないので、入門知識は地元で実施したDocker勉強会の過去資料を考慮した前提で紹介します。情報が古いですがdockerコマンドの使い方とか基本的なことは過去資料を参照してください。

[Docker 入門](http://www.slideshare.net/ShinichiroOhhara/docker-39456836) (SlideShare)

# 動作環境(再掲)
- ThinkPad X200s OS:Linux MINT 18
- ThinkPad X1 Carbon OS:Windows 10 Pro (Hyper-V)

個人的に開発環境のOSはLinuxなので、MacOSやWindowsについては優先度が低いのでご了承ください。

# Dockerfile
上記SlideShareの資料23ページから紹介しているDockerfileから流用して実際のDocker動作を再確認してみます。
基本的な仕組みやDockerコマンドもそちらで参照して下さい。

## 保存場所
さて、イメージを作成する場合にDockerfileを使用しますが、LinuxやWindowsとOSが異なっても利用出来るオンラインストレージDropboxを保存場所としてここでは使用してみます。ソースファイルが一元管理出来るので、複数の環境で開発している場合にとても便利に利用出来ます。
Dropbox自体のインストールは済ませた状態を前提とします。

## Docker Imageの作成
SlideShareの資料と同じく、ディストリビューションはubuntuを使用して、webサーバーのnginxを動作させたイメージを作成します。

### Linuxの場合
Dropboxの作成したディレクトリに移動しています。

```
$ mkdir Dropbox/docker
$ cd Dropbox/docker
```

適当なテキストエディタにてDockerfileを作成。

```:Dockerfile
FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
ENTRYPOINT /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
```

作成したDockerfileをビルドしてイメージを作成します。

```
$ docker build -t nginx/ubuntu:1.0 .
```

少々待つとイメージが作成されますので、確認してみます。

```
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx/ubuntu        1.0                 123456789ABC        19 minutes ago      223.1 MB
ubuntu              latest              123456789ABC        10 days ago         127.2 MB
hello-world         latest              123456789ABC        3 months ago        1.848 kB
```

### Windowsの場合
コマンドプロンプトにて、Dropboxのディレクトリに移動します。
Dockerfile自体は先にLinux側で作成されていますので共有されているはずです。

```
C:\Users\user\> cd Dropbox\docker\nginx
C:\Users\user\Dropbox\docker\nginx> 
```

同じDockerfileを使用してwindows側のDockerにもイメージを作成します。

```
C:\Users\user\Dropbox\docker\nginx> docker build -t nginx/ubuntu:1.0 .
```

少々待つとイメージが作成されますので、確認してみます。

```
C:\Users\user\Dropbox\docker\nginx> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx/ubuntu        1.0                 123456789ABC        19 minutes ago      223.1 MB
ubuntu              latest              123456789ABC        10 days ago         127.2 MB
hello-world         latest              123456789ABC        3 months ago        1.848 kB
```

この様にオンラインストレージのDropboxを利用するとDockerfileのソースファイルを異なるOS環境でも共有出来ます。

## Docker Imageの起動と動作確認
作成したイメージを実行してnginxの動作を確認してみましょう。

### Linuxの場合
イメージはリポジトリ名とタグを指定して、サービスポートはローカルの80番を利用します。
```
$ docker run -d -p 80:80 nginx/ubuntu:1.0
```

状態確認してプロセスがあればサービスが起動しています。

```
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
abcdefghijkl        nginx/ubuntu:1.0    "/bin/sh -c '/usr/sbi"   19 minutes ago      Up 5 seconds        0.0.0.0:80->80/tcp   cranky_hugle
```

curlコマンドやwebブラウザでnginxのwelcomeメッセージが表示されるはずです。

```
$ curl localhost:80
```

### Windowsの場合
Linuxと同じようにコマンドプロンプトにてイメージファイルを実行します。

```
C:\Users\user\Dropbox\docker\nginx> docker run -d -p 80:80 nginx/ubuntu:1.0
```

状態確認してプロセスがあればサービスが起動しています。

```
C:\Users\user\Dropbox\docker\nginx> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
abcdefghijkl        nginx/ubuntu:1.0    "/bin/sh -c '/usr/sbi"   19 minutes ago      Up 5 seconds        0.0.0.0:80->80/tcp   cranky_hugle
```

webブラウザでnginxのwelcomeメッセージが表示されるはずです。