LoginSignup
7
7

More than 5 years have passed since last update.

Vagrant上のdockerでnginxを作成しホストからアクセスする

Last updated at Posted at 2017-08-05

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をローカルで編集できるようにする

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7