背景
ここは前回 Docker 再入門1 2016 の続きになります。
最初のインストール方法は前回の記事で紹介してます。また基本的なコマンド例は以下のSlideShareの資料を参考にしてください。
Docker入門(再掲)
基本的なDockerの仕組みは変わらないので、入門知識は地元で実施したDocker勉強会の過去資料を考慮した前提で紹介します。情報が古いですがdockerコマンドの使い方とか基本的なことは過去資料を参照してください。
Docker 入門 (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を作成。
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メッセージが表示されるはずです。