最近、話題のDockerについて色々調べてみた。
Dockerとはいわゆる、「仮想化」の一種だ。(仮想化についてわからないなら、ググッて)
他の仮想化技術と違って、優れている点は
- 起動が早い
- リソースを余計に取らない
などが挙げられている。
インストールの手順や簡単な動作はここでは割愛する。
用語の説明
イメージ
プログラミングで言う所の、Classみたいなものだ。
これを作らなければ、始まらない。
コンテナ
イメージを元に作成される、本体のOSから利用できる実態
プログラミングで言う所の、Classから作成されるインスタンスみたいなものだ。
Dockerfile
dockerのイメージを作成する設定ファイル。
これを配布するだけで、誰でも同じイメージを作成できる。
Nginxサーバを建てよう
実際に、 NginxサーバをDockerを利用して構築しようと思う。
以下必要なファイル
- Dockerfile
- index.html
Dockerfileの記述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# ベースをubuntuにする FROM ubuntu:17.10 # Nginxのインストール RUN apt-get -y update && apt-get -y upgrade RUN apt-get -y install nginx # 開放するポートの指定 EXPOSE 80 # rootフォルダへリソースのコピー COPY index.html /var/www/html/ # Nginxの起動 CMD ["nginx", "-g", "daemon off;"] |
要約すると、
- ubuntu 17.10をベースのOSにする
- Nginxをインストールする
- 80のポートを開放する
- ローカルの"index.html"を仮想OS内の"/var/www/html/"以下にコピー
- インスタンス作成時にNginxを起動する
index.htmlの記述
1 2 3 4 5 6 7 8 9 |
<!doctype html> <html> <head> <meta charset="utf-8" /> </head> <body> <h1>Hello world!</h1> </body> </html> |
コンテナ作成まで
手順として
- DockerfileからDockerイメージを作成
- DockerイメージからDockerコンテナを作成
になる
以下の通りだ
1 2 3 4 5 |
#Dockerイメージを作成 docker image build -t nginx-server:1.0 ./Dockerfile #Dockerコンテナを作成 docker container run --rm nginx-server:1.0 -p 8888:80 |
コンテナ作成時にポートフォワーディングを行うことができる。
今回は、"ローカルの8888ポート" = "コンテナの80ポート"になっている。
つまり、8888のポートでDockerコンテナ内のindex.htmlにアクセスできるということだ。
ブラウザで"localhost:8888/"を叩いてみよう。