#1.Dockerで仮想環境を作成する方法
Dockerをインストールした後、アプリケーションの仮想環境を作成します。
方法は2つあります。
- Docker Hub からイメージをダウンロードする
- 自分でコンテナを作成して構築する
今回は、手始めに簡単にできるDocker Hubから作成済みのコンテナをダウンロードして環境を構築します。
#2.Docker Hubとは
Docker Hubは、クラウド上に用意されているアプリケーションやサービス・コンテナの配布、公開などを行っています。
運営は、docker社が行っています。
(参考)http://docs.docker.jp/docker-hub/overview.html
サイトにアクセスするにはユーザー登録がいりますが、無償でも参加できます。
また、Docker Hubに登録されているアプリケーションを検索することができます。
#3.Docker HubからWebサーバーをダウンロードして構築する
今回は、Webサーバとしてapacheを使用します。
- dockerが起動していることを確認し、以下のコマンドを実行してダウンロードします。
# docker pull httpd
実行例
# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
afb6ec6fdc1c: Pull complete
5a6b409207a3: Pull complete
41e5e22239e2: Pull complete
9829f70a6a6b: Pull complete
3cd774fea202: Pull complete
Digest: sha256:db9c3bca36edb5d961d70f83b13e65e552641e00a7eb80bf435cbe9912afcb1f
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest
- ダウンロードされたことを確認します。
# docker images
実行例
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest d4e60c8eb27a 31 hours ago 166MB
centos latest 470671670cac 4 months ago 237MB
hello-world latest fce289e99eb9 16 months ago 1.84kB
「httpd」 があることを確認します。
#4.Webサーバーを起動する。
先ほどダウンロードしたapacheを起動し、動作を確認します。
# docker run -d -p 81:80 httpd
docker コマンドの紹介は別途しますが、ここで意識するオプションは3つです。
-d → コマンドをバックグラウンドで実行する
-p (サーバーのポート):(コンテナのポート) → ポートの紐づけ
上記の例では、サーバー81番ポートと、コンテナ(httpd)80番ポートを紐づけます。
つまり、コンテナのWebサーバにアクセスするときは、81番ポートに接続するということになります。
httpd 実行するイメージ
[root@dockerl ~]# docker run -d -p 81:80 httpd
b8fd34885a6c2828f10f4db4b0dc960688bea07818e9d1013d4da49e5e1e9a1b
実際に、ウェブブラウザでアクセスしてみます。
URLは以下になります。
http://(サーバのIPアドレス):81/
画面が出れば成功です。
ちなみに、私の環境では「It's Works!」というテキストだけの画面が出ました。
#5.Webサーバの停止
Dockerのコンテナを停止は以下のようにします。
- コンテナのコンテナIDを調べる
- コンテナIDを指定して停止させる
# docker ps
# docker stop (コンテナID)
実行例
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b8fd34885a6c httpd "httpd-foreground" 6 minutes ago Up 5 minutes 0.0.0.0:81->80/tcp eager_noether
# docker stop b8fd34885a6c # stop の後には、docker psのCONTAINER IDを指定する。
b8fd34885a6c
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#
docker stop の後のdocker ps でhttpd が消えていれ成功です。
#6.コンテナに独自の設定を行う
ダウンロードしたhttpdには、初期設定が入っています。
独自の設定をするにはローカルサーバー上に設定ファイルやコンテンツを保存し、コンテナにそこを参照させます。
その方法は、docekr run の -v オプションを使用します。
-v "(サーバーのパス):(コンテナに配置するパス)" →ファイル、ディレクトリの紐づけ
ディレクトリ指定の場合は必ず最後に/ を入れてください。
/を入れない場合はファイルと認識されるようです。
例)ディレクトリを置き換える
# docker run -d -p 81:80 -v "/tmp/httpdtest/:/usr/local/apache2/htdocs/" httpd
/tmp/httpdtest にindex.html やコンテンツを保存したうえで上記を実行すると、保存したファイルが表示されます。
なお、-v オプション、-pオプションは1つのコマンドで複数選択できます。
例えばコンテンツが複数のディレクトリに分かれている。httpd.conf を変更したいといった場合、
複数のポートを使用している場合にも適用できます。
今回使ったオプションのまとめ
-d → コマンドをバックグラウンドで実行する
-p (サーバーのポート):(コンテナのポート) → ポートの紐づけ
上記の例では、サーバー81番ポートと、コンテナ(httpd)80番ポートを紐づけます。
つまり、コンテナにWebサーバにアクセスするときは、81番ポートに接続するということになります。
-v "(サーバーのパス):(コンテナに配置するパス)" →ファイル、ディレクトリの紐づけ
パスはディレクトリ指定の場合は必ず最後に/ を入れてください。
/を入れない場合はファイルと認識されるようです。
httpd 実行するイメージ
#.7参考
dockerやdockerコマンドについての詳細は、下記を参照してください。
Docker ドキュメント日本語化プロジェクト : http://docs.docker.jp/index.html
Dockre Docs : https://docs.docker.com/
以上です。