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