プログラミングと旅と映画の日々

普段はスマホ決済サービスの会社でバッグエンドを担当しているエンジニアです。プログラミングと趣味の映画、株、時々うどんに関してブログを書いていこうと思います。海外ドラマ、クロスバイクも好きです。

【Docker】nginxイメージでウェブサーバー構築【入門】

nginxイメージでウェブサーバー構築

f:id:takanori5:20181028132956p:plain
https://hub.docker.com/_/nginx/

nginxのコンテナを立ち上げるコマンドは以下

docker run --name <コンテナ名> -d \
 -p <ホスト側のポート番号>:<コンテナ側のポート番号> \
 <イメージ名>

コマンドの末尾の\は複数業に続くコマンドを指定する場合に使う

  • d detachモード(バックグラウンんどで動作。常駐型のものは-dを指定しましょう)

実際にnginxコンテナを起動していきます。

$ docker run --name test-nginx -d -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
f17d81b4b692: Pull complete
d5c237920c39: Pull complete
a381f92f36de: Pull complete
Digest: sha256:b73f527d86e3461fd652f62cf47e7b375196063bbbd503e853af5be16597cb2e
Status: Downloaded newer image for nginx:latest
5b2ea9c3c6deda192a973468c5d3619c2e0a57582c42a11165542a2da0c960ae

localhostの8080にアクセルして確認します。
すると以下のデフォルトの画面が出ると成功です!
dockerコンテナが動作していますね。
f:id:takanori5:20181102150020p:plain

nginxの80番ポートをコンテナを実行している仮想マシンの8080ポートにマッピング
仮想マシンの8080にアクセスされるとnginxのネットワークポート80番ポートに繋がる
nginxがコンテンツを返しデフォルトページが表示される。

f:id:takanori5:20181102150341p:plain

host上のhtmlファイルをnginxで公開

host上のディレクトリをコンテナにマウントしていきます。
nginxのhubのページをみにいきます。
以下に記載があります。
f:id:takanori5:20181102153550p:plain

  • vオプションがついていますね。
-v <host側のディレクトリ>:<コンテナ側のマウントポイント>:<オプション>
//例
$ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

/usr/share/nginx/htmlはnginxのドキュメントルートディレクトリです。roオプションはリードオンリーの略。

今回は以下のようなディレクトリ構成で -vを指定して実行してみます。

-v USER/<ユーザー名>/docer-tutorial/html:/usr/share/nginx/html:ro

マウントを利用することでイメージにはソースコードは含めずに
gitでソースは管理して、マウントして修正内容などをすぐに確認できます。
超便利ですね!

マウントするように簡単なhtmlファイルを以下のディレクトリないに作成します。

/Users/hodzumitakanori/docker-tutorial/html

$ cat index.html
<!DOCTYPE html>
<html>
<body>
<h1>Hello takanori5!<h1>
</body>
</html>

コマンドを実行!

$ docker run --name nginx -v /Users/hodzumitakanori/docker-tutorial/html:/usr/share/nginx/html:ro -d -p 8080:80 nginx
c401ad4ccdc84fdaed5ce047a684ceb2a831eec85e803f1e93fe3c4ae5cb0eec

f:id:takanori5:20181102155441p:plain