Vagrantで作成したVM上のDockerでnginxサーバーを稼働しローカルからアクセスできるようにします。
環境
MacOS 10.12.6 (Sierra)
Vagrant 1.9.7
CentOS 7.3(VM)
Docker 17.06.0-ce
下準備
VagrantでVMを作成しその上でDockerを利用できる状態であること。
してない場合は下記参照下さい。
VagrantでVM起動に自動でDockerをインストールする
nginxイメージの取得
イメージはDocker Hub内のOfficialのnginxイメージを使用します。
Official build of Nginx.
# vmに入る
vagrant ssh
# nginxのdockerイメージを取得する
docker pull nginx
# バージョンを指定したい場合はタグで指定する※ない場合は最新(latest)が指定される
# docker pull nginx:1.13.33
# イメージが取得できたか確認
docker images
# nginxのイメージが表示される
nginxの起動確認
# 起動
docker run -d --name nginx_test -p 8080:80 nginx
# nginx_test <- 名前付け
# -d <-- バックグラウンドで実行
# -p 8080:80 <- ホスト(VM)の8080番ポートをコンテナの80番ポートにマッピングする
# nginx <- 使用するイメージ名
# コンテナが稼働しているか確認
docker ps -a
# nginxがupになっている
# 表示確認
curl localhost:8080
# nginxのwelcomeページが取得される
Vagrantホスト(今回はMac)からアクセスする
VMにアクセスするためのIPを設定する
# ホスト側でVagrantfileを編集
vi Vagrantfile
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
---略----
#config.vm.network "private_network", ip: "192.168.33.10"
↓上記の行をコメントアウトを外し任意のIPを設定
config.vm.network "private_network", ip: "192.168.33.10"
---略----
# SHELL
end
# vagrant再起動
vagrant reload
# VMに入り再度nginxを起動する
vagrant ssh
# 起動しているコンテナを確認
docker ps -a
# nginxのステタースがExitedになっている
# 再開する
docker start nginx
# 再開確認
docker ps -a
# nginxのステタースがupになっている
# アクセスが来るかログを監視
docker logs -f nginx
ホスト(Mac)側からの表示確認
ブラウザで
http://192.168.33.10:8080/
#IPは設定したもの
にアクセスしてnginxのwelcomeページが表示され
dockerのログにアクセスログが出ることを確認する
自動でnginxをインストールし起動するようにする
上記手順では手動でイメージのインストール、起動を行いましたが
Vagrantファイルに記述することでvagrant up時に自動で行うように設定します。
vi Vagrantfile
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
---略----
# 以下の記述を追加
config.vm.provision "docker" do |d| #dockerをインストール・起動する
d.run "nginx", image: "nginx", args: "-p 8080:80" #nginxを"-p 8080:80"を引数にrunする(自動でnginxイメージを取得)
end
---略----
# SHELL
end
次はコンテンツ編集をローカルでできるようにしたいと思います。
Vagrant-docker-nginx環境でhtmlをローカルで編集できるようにする