dockerのインストール
dockerとboot2dockerは
OS X をサポートした Docker 0.8 を試す - Qiitaの手順でインストールしました。
~/.bashrcには以下の1行を追加します。
export DOCKER_HOST=tcp://localhost:4243
nginxをインストールするDockerfile
Dockerでnginxサーバー立ててみた。あとDockerの使い方とか。 - Less is Bestを参考にしつつ、好みに応じて改変しました。
改変の内容は以下の通りです。
- rpmの署名を検証する公開鍵をインストール
- nginx公式レポジトリはrpmをyumでインストール
- nginx.confはそのままで、nginxを起動時に"daemon off;"を引数で指定
FROM tianon/centos:6.5
MAINTAINER Hiroaki Nakamura <hnakamur@gmail.com>
RUN yum update -y && \
rpm --import http://nginx.org/keys/nginx_signing.key && \
yum install -y http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm && \
yum install -y nginx
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
ちなみに http://stackoverflow.com/a/21468956 で知ったのですが、AUFSを使う場合のRUNの個数制限は昔は42個だったのがdockerのバージョン0.7.2以降は127個に増えたそうです。docker/CHANGELOG.md at master · dotcloud/docker
とはいえ、節約した方がいいので1つのRUNで複数のコマンドを&&で繋いで実行するようにしています。1行が長くなるので行末にバックスラッシュを入れて改行しています。
イメージのビルド
Dockerfileのあるディレクトリで以下のコマンドを実行します。
docker build -t hnakamur/nginx .
最速Docker研究会(DockerのTipsを20個上げていくぜ編) - Happy New Worldの「3. docker build時には必ずタグを付ける。」を参考に、タグを付けてbuildするようにしました。
VirtualBoxのポートフォワーディングの設定
DockerをBoot2dockerで動かした際のポートフォワードをCLIから設定する - Qiitaや
Docker on OSX: Port Forwarding | FogBlogを参考に以下のコマンドで設定しました。
私の手元の環境ではOS Xでnginxを80番ポートを使用していたので、OS Xの8080番ポートをVirtualBoxの80番ポートにフォワーディングするようにしました。
VBoxManage controlvm "boot2docker-vm" natpf1 "nginx,tcp,127.0.0.1,8080,,80"
起動方法
docker run -d -p 80:80 hnakamur/nginx
で起動します。-p 80:80でVirtualBoxの80番ポートをdockerのhnakamur/nginxコンテナの80番ポートにフォワーディングしています。
OSXからcurlで確認
ポートフォワーディングは
OSX 8080 ---> VirtualBox 80 ---> hnakamur/nginx 80
という状態になっていますので、
curl http://localhost:8080
と実行すれば、OSXからdockerコンテナのnginxにアクセスできました。