DamienKarrus’s blog

プログラミングとクライミングの足跡

DockerでWebサーバを作ってみる Docker入門-3

  1.  「Dockerのイメージを使って環境構築する

ホストOSにapacheをインストールせずに、Webサーバを構築し、不要になったらDockerイメージを削除してもホストOSになんらの影響も与えない。
ここではDockerで類似するイメージを探してインストールし、動作確認をした後、削除してみる

(1)イメージを探す

https://hub.docker.com/
左上のsearch でhttpdを検索するとhttpdというイメージが見つかる
Supported tags のところに配布しているバージョンがかかれている
イメージ名称とバージョン(タグ)を:でつないでイメージの名称として使用する

$ docker pull httpd:2.4

/* Amazon EC2でいきなりこのコマンドを打つとpull access denied for http レジストリがないかdocker login が必要,,, などとでる。 原因調査中

(1)pull(2)create startを一度にやるrunコマンドなら動作する

docker run -dit my-apache-app -p 8080:80 -v "$PWD":/usr/local/pache2/htdocs/ httpd:2.4

Windows11+WSL2上のUbuntu20.04ではすんなり動く

*/

(2)イメージをダウンロードし、Dockerコンテナを生成、起動する

コンテナを生成する。イメージを指定する(ダウンロードされていなければ自動的にダウンロードされる

$ docker container create --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

 ※ホストOSのport8080をコンテナの80にマッピングする

 ※カレントディレクトリ($PWD)を/usr/local/apache2/htdocs にマウントする

 ※root権限で実行しないと/usr/local下にはdirectoryはできないので、一般権限でコンテナを作るときはディレクトリを作っておいて書き込み権限を入れておかないとダメかもしれない

コンテナを起動する

$ docker container start my-apache-app
psで稼動確認する
このコンテナの名称を my-apache-app と名づけたので、以降この名称を使用する
$ docker container ps
ブラウザでEC2インスタンスIPアドレスにアクセスするとapacheが稼動していることが確認できる

(3)コンテンツの作成

カレントディレクトリが/usr/local/apache2/htdocs にマッピングされているので、index.htmlを作ればブラウザにその内容が表示される

(4)コンテナの停止と再開

$ docker container stop my-apache-app
ブラウザでEC2インスタンスIPアドレスにアクセスするとapacheが停止していることが確認できる
再び起動するには
$ docker container start my-apache-app

(5)ログの確認

実行中のログは以下のコマンドで確認できる
 docker container logs my-apache-app

(6)コンテナの破棄

コンテナは停止した後であれば rm コマンドで消去できる
$ docker container stop my-apache-app

$ docker container ps -a でSTATUSがEXITEDになっていることを確認する
$ docker container rm my-apache-app

$ docker container ps -a でmy-apache-appがないことを確認する

(7)Dockerイメージの破棄

ダウンロードしたイメージの確認
$ docker image ls でダウンロード済みのイメージを確認
$ docker image rm httpd:2.4
$ docker image ls で消去されたことを確認

次の記事

コンテナにログインする docker入門-4 - DamienKarrus’s blog (hatenablog.com)