Docker: 公式nginxコンテナを用いてWebサーバコンテナの実行・停止・削除コマンドを確認
· 約3分
Dockerコマンドの基本的な動作を確認する為のnginx Webサーバコンテナを用いたwebページの表示確認操作の手順を記載。
実行環境
| OS | Mac OS X |
|---|---|
| Docker version | 1.8.1 |
コンテナの作成・実行
$ docker-machine ls ← docker containerを動かすVMのステータス確認
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.102:2376
docker runコマンドを用いて公式nginxコンテナを起動する。仮にnginxのイメージが無い場合は下記実行結果の通り、リポジトリからpullした上でコンテナを実行する。尚、-dオプションはバックグラウンド実行(detach)、-Pオプションはコンテナ側でEXPOSE指定されたポート(ここでは、80, 443)とVMのポートの対応をランダムで割り付ける。
$ docker run -d -P --name web nginx
Unable to find image 'nginx:latest' locally
Pulling repository docker.io/library/nginx
0b354d33906d: Download complete
<中略>
Status: Downloaded newer image for nginx:latest
1b18cbc13ba2129cf3a74aa86bb09f8a5eb7832e3f4113889e1b8c110179b63c
"nginx"とコンテナイメージタグを何も指定しない場合、latest(最新)tagのイメージをデフォルトでダウンロードする。他のタグが利用可能かどうかはDocker Hub (nginx)のドキュメントを参照。
$ docker ps ← dockerプロセスの確認
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b18cbc13ba2 nginx "nginx -g 'daemon off" 29 minutes ago Up 29 minutes 0.0.0.0:32773->80/tcp, 0.0.0.0:32768->443/tcp web
ここではVMのポート32773が"web"コンテナの80番に紐付けられている。その為、ブラウザからのアクセスの際は、アドレス となる。
Kitematicを起動している場合は下図の通りプレビューウィンド上のボタンから対象ページをブラウザ起動してくれるので、アドレスを打ち込む手間が省ける。 
コンテナの停止・削除
$ docker stop web ← コンテナの停止
web
$ docker ps -a ← aオプションで停止状態のコンテナステータスまで表示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e97205fa03d7 nginx "nginx -g 'daemon off" 14 minutes ago Exited (0) 2 minutes ago web
$ docker rm web ← コンテナの削除
web
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
※確かにコンテナが削除されている。
コンテナの外部ポートを指定して起動
nginxのポートをVM (docker-machine)の指定のポートに紐づけたい場合は-p(小文字)オプションを用いる。下記はVMのport 80、443をコンテナのport 80、443にそれぞれ割り付けている。
$ docker run -d -p 80:80 -p 443:443 --name web nginx
31050cc8a8beb0c1a32ebf5faeb9bc27ec29bf7b8369e6839775a877054cd5f1
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31050cc8a8be nginx "nginx -g 'daemon off" 4 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp web
