自由気ままに書いちゃおう

好きなことをつらつらと・・・

【docker】apacheコンテナを利用してみる(ポート転送)

今回はせっかくなので、apacheコンテナを動作させるついでに、
ポート転送(ポートフォワーディング)の動作確認をしてみたいと思います。

■ポート転送とは?

ざっくり説明すると、
ローカルPCの指定したポート番号にアクセスした際に、
そのアクセスをコンテナ側の指定したポートに接続する(=転送する)、
といった感じです。

「ローカルPCの指定したポート」というのは、
あらかじめ自身で"このポートに接続するようにする"という定義をしておく必要があります。
※詳細は後述します。

また、「コンテナ側の指定したポートに接続する」も、あらかじめ自身で"このポートに転送する"という定義をしておく必要があります。
※詳細は後述します。

■作業の流れ

以下の流れで進めていきます。

① コンテナ起動時に「8080番ポートへのアクセスは、コンテナの80番ポートに転送する」といった情報を指定します。
② ブラウザ上からlocalhost:8080で接続します。
③ apacheの設定ファイル(index.html)を更新し、反映した内容が表示されるかを確認します。

■① コンテナ起動時に「8080番ポートへのアクセスは、コンテナの80番ポートに転送する」といった情報を指定します。

1.以下コマンドを実行します。

docker run -d -p 8080:80 --name apache1 httpd
docker ps -a

 

f:id:guri2o1667:20201110114302p:plain

こちらの内容が冒頭で記載した、
あらかじめ自身で"このポートに接続するようにする" ⇒ 8080
あらかじめ自身で"このポートに転送する" ⇒ 80
という定義部分です。

■② ブラウザ上からlocalhost:8080で接続します。

f:id:guri2o1667:20201110114346p:plain

上記のように「It works!」と表示できていれば成功です。

■③ apacheの設定ファイルを更新し、反映した内容が表示されるかを確認します。

1.以下コマンドを実行します。

docker exec -it apache1 /bin/bash

f:id:guri2o1667:20201110114649p:plain

2.以下コマンドを実行します。

※ 設定前のindex.htmlの内容を確認しています。
※ 以降手順で、index.htmlを修正します。

cat /usr/local/apache2/htdocs/index.html

f:id:guri2o1667:20201110114809p:plain

3.以下コマンドを実行し、を適当な文字列に修正します。

※viコマンドがインストールされていないため、echoコマンドで追記しています。

f:id:guri2o1667:20201120111247p:plain


4.ブラウザを更新すると、追記した文字列が表示されます。

f:id:guri2o1667:20201120111357p:plain


以上です。