Dockerのツボトコツがゼッタイにわかる本の学習記録です
1.環境構築(Chap1、Chap2相当)
Windows11のPC上にDockerDesktopをインストールして利用。インストールすると自動的にWSL2の更新などもやってくれるので全てお任せ。PowerShellを起動するとバージョンアップするように促されるので指示に従い、このあたりから最新版をインストールする。DockerHubも利用したい場合はDockerアカウントもあわせて作成しておく。
以上で利用する準備はOKです
2.Dockerはじめの一歩
Dockerにはチュートリアルとチュートリアル用のDockerfileが用意されている。PowerShell7(以下PS)で以下のコマンドを実行する
docker run --name tutorial01 -d -p 80:80 docker/getting-started

起動したらブラウザで http://localhost と入力すると以下のようなチュートリアル画面が表示される。

2-1 ポート番号を変更する
いったんtutorial01コンテナを停止しポート番号を8080に変更して起動する
docker stop tutorial01
docker run --name tutorial01 -d -p 8080:80 docker/getting-started
すると以下のようなエラーが表示されて起動しない
docker: Error response from daemon: Conflict. The container name "/tutorial01" is already in use by container "hogehoge・・・・・・".
You have to remove (or rename) that container to be able to reuse that name.
一度削除(rm)してから再度起動する必要があるようだ
docker rm tutorial01
docker run --name tutorial01 -d -p 8080:80 docker/getting-started
こんどは http://localhost:8080 でチュートリアルサイトを開くことができた。
2-2 起動状態を確認する
docker ps コマンドを使用すると起動しているコンテナの状態を確認することができる。docker ps -a のようにすると停止しているコンテナなども確認することができる
(ホストのポート8080がリモートの80にマッピングされていることなどが分かる)

停止状態の確認

不要になったtutrial01(コンテナIDを指定しても良い)は削除しておく
docker rm tutrial01
docker image ls コマンドを使うと存在するイメージを表示することができる。TAGはイメージのバージョンを表し、最新版はlatestというタグがついている。
2-3 Docker Hubで確認する
DockerDesktopを開き、DockerHubのアイコンをクリックすると検索画面が出るので、getting-startedのような名前で検索する

クジラマークの公式イメージを開くと、以下のような説明が表示される

2-4 せっかくなので他のイメージも試してみる
例えばapacheで検索して以下のような公式イメージを表示する

今回はDockerfieを使わずにコマンドで起動させたいのでWithout a Dockerfileを参考にする。
docker run -dit --name my-apache01 -p 8080:80 httpd:2.4
しばらく待つと起動するので、 http://localhost:8080 で動作確認する
※ブラウザのキャッシュで上手くいかないときは http://localhost:8080/index.html
docker stop my-apache01
docker rm my-apache01
3.複数コンテナの起動
以下のように記述すると複数のコンテナを起動することが出来る(8081と8082でアクセス)
docker run -dit --name web01 -p 8081:80 httpd:2.4
docker run -dit --name web02 -p 8082:80 httpd:2.4
コンテナの中に入るには docker execコマンドを使用する
docker exec -it web01 /bin/bash
以下のコマンドを打って内容が変わるか確認する(http://localhost:8081)
ls
cd htdocs
echo '<html><body><h1>It works!(Web01)</h1></body></html>' > index.html
exit
不要になったコンテナは削除しておく
docker stop web01
docker stop web02
docker rm web01
docker rm web02
以下のようにまとめて書くこともできる
docker stop web01 web02
docker rm web01 web02
■補足:Windowsのカレントフォルダをマウントしたいとき
以下のように${PWD}を使う
docker run -dit --name web01 -v ${PWD}:/usr/local/apache2/htdocs -p 8081:80 httpd:2.4
docker run -dit --name web01 -v "$PWD"::/usr/local/apache2/htdocs -p 8081:80 httpd:2.4
次の記事はこちら