見出し画像

【ハンズオン】Dockerでnginxを起動し、簡易ファイルを確認する(動画付き)

今回はDocker hubを見ながらnginxDockerで起動したいと思います。

大まかに次の2通りでやっていきたいと思います。

① Docker Hubに公開されている「image」を使う
  ⇨データの保存場所はコンテナ起動時にマウントを行います。
② Docker Hubの「image」を元に新しい「image」を作る
  ⇨Dockerfileを作成し、imageの中にデータの保存場所を作る

具体的にどういうことなのか、実際に見てみましょう。

I Docker Hubの「image」から作成する

1 概要

主に下のコマンドでやっていきます。

まずはマウントするためのフォルダをローカルに作っていきましょう。

2 マウントするフォルダを作る

まずはマウントするためのフォルダを今回はデスクトップに作りました。

私の場合、絶対パスは「/Users/ytakahashi/Desktop/0501」です。

3 コンテナを起動する

マウントするフォルダができたので、下のようにコンテナを立ち上げます

なお、マウントはショートカットのようなイメージです。

「:/usr/share/nginx/html」にデータが存在するわけではなく、ここにアクセスすることで、「/Users/…/0501」の中を参照しています。

「docker ps」コマンドで、実際に立ち上がっていることも確認できました。

docker run --name some-nginx -v /Users/ytakahashi/Desktop/0501:/usr/share/nginx/html:ro -p 8080:80 -d nginx

4 表示を確認する

コンテナが起動しましたので、指定したポートである「8080」を見にいきます。

http://localhost:8080/

このように表示されていることがわかりました。

また、マウントをしているため(コンテナ内に直接あるわけではないので)ローカルの内容を変えると、変更が反映されました。

5 コンテナを削除する

テストが終わったので、コンテナを消しましょう。

コンテナは「①止める」⇨「②削除する」の流れで実施します。

実際には「docker ps -a」で停止しているコンテナも含めて削除がされているかを確認してみてください。

docker stop some-nginx
docker rm some-nginx
docker ps -a


Ⅱ Dockerfileで「image」を作り、コンテナ内にデータを保管する

前章では既にある「nginx」というimageでコンテナを立ち上げました。

今回は「Dockerfile」を使って、オリジナルのimageを作った上で、
それを立ち上げてみましょう。

1 Dockerfileを作る

では、具体的にDockerfileを作ってみましょう。

「FROM」で、どのimageを元に作るのかを指定します。

FROM nginx
COPY index.html /usr/share/nginx/html

その上で、同じ階層の「index.html」を新しく作るimageにコピーします。

2 imageの作成

Dockerfileができたので、imageを作成しましょう。

下のコマンドの「.」はDockerfileの格納場所を示しています。(同じ階層にあります。)

docker build -t some-content-nginx .

「-t」でimageの名前を指定しています。

Dockerfileに書かれている内容が実行されているようですね。

docker run --name some-nginx -p 8080:80 -d some-content-nginx

3 コンテナを起動する

では、今つくったimageからコンテナを起動しましょう。

docker run --name some-nginx -p 8080:80 -d some-content-nginx

4 表示を確認する

locakhost:8080を見ると、次のように表示がされました。

また、前章との違いとして、今回はデータをマウントしているのではなく、imageの中に直接入れています。

そのため、ローカルの内容を変えたとしても、表示は変わりません。

5 コンテナとimageの削除

最後にコンテナとimageを削除しましょう。

今回はDockerfileでテスト用のimageも作成しましたね。

コンテナの削除は先ほどと同じです。

imageにつきましては、コンテナと異なり「起動する」という概念ではいので(あるかないか)「stop」をすることなく削除します。

docker stop some-nginx
docker rm some-nginx
docker image rm some-content-nginx


今回は以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊