神戸学院大学 経営学部 林坂ゼミ

Docker 入門トップページ

« 戻る 次へ »

Docker 入門

Docker はじめの一歩

nginx のコンテンツをコピーする

前のページでは Dockerfile を使って nginx をインストールしましたが,コンテンツは標準ページのままでした.ここでは,ローカル環境に保存した index.html をビルド時にコンテナにコピーする方法を確認します.

まず,任意の名前のフォルダを作成し,その中に index.html と Dockerfile を設置します.

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1>Hello Docker!</h1>
</body>
</html>

前のページでは nginx のドキュメントルートが「/var/www/html/」であることを確認しました.次の通り Dockerfile の3行目でローカル環境の index.html をコンテナにコピーしています.

Dockerfile
FROM ubuntu:latest
RUN apt-get update -y && apt-get install nginx -y
COPY index.html /var/www/html/
# ENTRYPOINT /usr/sbin/nginx -g "daemon off;"
CMD ["nginx", "-g", "daemon off;"]

作成したプロジェクトのフォルダに移動し,その中に index.html と Dockerfile が設置されていることを確認したら,Dockerfile をビルドします.ビルド後に作成されるイメージの名前は nginx_docker_index としておきます.ベースとなるイメージ ubuntu:latest は既にローカル環境にあるはずなので,今回は短時間でビルドが完了するはずです.

% docker build -t nginx_docker_index . ⏎
[+] Building 0.1s (8/8) FINISHED                              docker:desktop-linux
 => [internal] load build definition from Dockerfile                          0.0s
 => => transferring dockerfile: 295B                                          0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest              0.0s
 => [internal] load .dockerignore                                             0.0s
 => => transferring context: 2B                                               0.0s
 => [1/3] FROM docker.io/library/ubuntu:latest                                0.0s
 => [internal] load build context                                             0.0s
 => => transferring context: 334B                                             0.0s
 => CACHED [2/3] RUN apt-get update -y && apt-get install nginx -y            0.0s
 => [3/3] COPY index.html /var/www/html/                                      0.0s
 => exporting to image                                                        0.0s
 => => exporting layers                                                       0.0s
 => => writing image sha256:39106112b99e2469608b8cc1cd5d9b52c4a8d29f311127df  0.0s
 => => naming to docker.io/library/nginx_docker_index                         0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/zipbns1idt6mkxb8j7c4ypzln

What's next:
    View a summary of image vulnerabilities and recommendations → docker scout quickview

ビルド完了後にイメージが作成されていることを一覧で確認します.

% docker image ls ⏎
REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
nginx_docker_index   latest    39106112b99e   52 seconds ago   164MB
nginx_dockerfile     latest    a80290eff455   9 minutes ago    164MB
nginx_image          latest    574fd29fc459   16 minutes ago   172MB
ubuntu               latest    b60cb74dfa1b   2 weeks ago      101MB

作成できたイメージ nginx_docker_index からコンテナを生成して起動します.このときコンテナ名は web3 とし,ローカル環境の 8083 番ポートをコンテナの 80 番ポートに接続しています.

% docker run -d -p 8083:80 --name=web3 nginx_docker_index ⏎
fbbb91543bfdf13ed18a078db8cbdc614aef3c7d8a76a18a43701e3b362209a3

コンテナの起動を確認するために docker container ls コマンドを実行します.

% docker container ls ⏎
CONTAINER ID   IMAGE                COMMAND                   CREATED          STATUS          PORTS                                     NAMES
fbbb91543bfd   nginx_docker_index   "nginx -g 'daemon of…"   11 seconds ago   Up 10 seconds   0.0.0.0:8083->80/tcp, [::]:8083->80/tcp   web3
fd75ea005517   nginx_dockerfile     "/bin/sh -c '/usr/sb…"   8 minutes ago    Up 5 minutes    0.0.0.0:8082->80/tcp, [::]:8082->80/tcp   web2
d0d9b8e5e5f1   nginx_image          "nginx -g 'daemon of…"   15 minutes ago   Up 5 minutes    0.0.0.0:8080->80/tcp, [::]:8080->80/tcp   web1

Web ブラウザを起動し http://localhost:8083/ に接続します.ローカル環境で作成した index.html の内容が閲覧できることを確認してください.

docker-06

なお,index.html はコンテナのビルド時にコンテナにコピーされるので,index.html の内容を更新したい場合はローカル環境でコンテンツを編集した後,コンテナをビルドし直さなければならないことに注意してください.次のページではボリュームを利用してローカル環境にあるコンテンツをコンテナに接続することを考えます.これによりローカル環境でファイルを編集するとリアルタイムでコンテナに反映することができるようになります.