DockerfileからNginxイメージを作成して
起動する手順を紹介します!
Dockerイメージ作成準備
作成するファイルの構成
このようなディレクトリ構成で「Dockerfile」、「default.conf」、「index.html」を作成します。
$ tree nginx
nginx/
├── Dockerfile
├── default.conf
└── index.html
Dockerfileを作成する
FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./index.html /var/www/index.html
FROM:ビルドするイメージのベースイメージを取得します。
COPY:ホスト側からコンテナ側にファイルやディレクトリをコピーします。
ここでは、nginx:latestのベースイメージを使用して、ローカルPCにあるdefault.conf、index.htmlファイルをコンテナ側の指定のディレクトリにコピーしています。
次にDockerfile内でよく使われる命令を紹介します。
コマンド | 説明 |
---|---|
FROM | ビルドするイメージのベースイメージ |
RUN | イメージビルド時に、コンテナで実行するコマンドを定義 |
COPY | ホスト側からコンテナ側にファイルやディレクトリをコピー |
ADD | COPYコマンド+αの機能を提供。URLからダウンロードしてコピー先に転送などができる |
CMD | docker run 時に実行されるコマンド |
ENTRYPOINT | コンテナを実行可能ファイルとして使用する際に定義するコマンド |
ARG | docker image build時に利用する変数 |
ENV | コンテナ内の環境変数を定義 |
EXPOSE | コンテナが公開するポート |
VOLUME | ホストや他のコンテナからマウント可能なボリュームを指定する |
LABEL | イメージに追加するメタデータ |
STOPSIGNAL | コンテナに送られて終了するシステムコール信号を設定 |
HEALTHCHECK | コンテナ内でコマンドを実行し、その結果をヘルスチェック(死活監視)として利用する |
USER | コンテナで使用されるユーザ名(UID) |
WORKDIR | 作業ディレクトリを変更する |
ONBUILD | コンテナ内で実行するコマンドを定義するが、定義したイメージでは実行されない。 ONBUILDを定義したベースイメージを利用するイメージのビルド時に実行される。 |
参考
この書籍ではDocker・Docker Compose・Kubernetesについて実践的な内容が解説されています。
Docker関連技術を網羅的に学習できます。
default.confを作成する
server {
listen 8080 default_server;
server_name localhost;
location / {
root /var/www;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
}
index.htmlを作成する
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>nginx test</title>
</head>
<body>
<h1>Hello, Nginx!</h1>
</body>
</html>
Dockerイメージを作成する
必要なファイルの準備ができたので、いよいよDockerイメージを作成します。
Dockerイメージを作成するには docker build コマンドを使用します。
$ docker build -t docker-nginx .
Sending build context to Docker daemon 4.096kB
Step 1/3 : FROM nginx:latest
---> f0b8a9a54136
Step 2/3 : COPY ./default.conf /etc/nginx/conf.d/default.conf
---> eed1540a1f89
Step 3/3 : COPY ./index.html /var/www/index.html
---> c0881b2def7e
Successfully built c0881b2def7e
Successfully tagged docker-nginx:latest
作成されたDockerイメージを確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-nginx latest c0881b2def7e 58 seconds ago 133MB
先ほど作成したイメージが表示されました!
作成したイメージを使ってDockerコンテナを起動する
コンテナを起動するには以下のようにコマンドを実行します。
$ docker run --name <コンテナ名> --rm -d -p <ホスト側ポート>:<コンテナ側ポート> <イメージ名>
「docker run」:コンテナを起動するコマンドです。
「–name <コンテナ名>」:コンテナ名には任意の名前を指定します。コンテナの識別や操作にこの名前を使うことができるので指定しておくことをおすすめします。
「–rm」:このオプションをつけると docker stop でコンテナを停止した際、コンテナの削除も行いますので、指定しておくことをおすすめします。
「-d」: デタッチモードで起動します。この指定でコンテナがバックグラウンドで実行します。
「-p」:ホスト側ポートはパソコン側のポートで、コンテナ側ポートは起動したDockerコンテナのポートになります。
「イメージ名」:先ほどdocker buildの時に指定したイメージ名を指定します。
それでは実際にコンテナを起動してみましょう。
$ docker run --name nginx-test --rm -d -p 8080:8080 docker-nginx
コンテナが起動しているか確認します。
起動しているコンテナを確認するには docker ps コマンドを使用します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de1e22a425d1 docker-nginx "/docker-entrypoint.…" 34 seconds ago Up 32 seconds 80/tcp, 0.0.0.0:8080->8080/tcp nginx-test
STATUSがUPになっているので起動しているようです。
ではブラウザから「localhost:8080」にアクセスしてみましょう。
期待通り、「Hello, Nginx!」が表示されましたね!
まとめ
以上、DockerfileからNginxのDockerイメージを作成して、コンテナの起動まで行う手順をご紹介しました。
最後まで読んでいただき、ありがとうございました。
この記事が少しでもみなさまのお役に立てれば嬉しいです。
当ブログではWordPressテーマにSWELLを使用しています。