目次
-
- 外部からコンテナにアクセスできるようにする為に
- ボリュームの作成
- volumeが正しく生成されているか確認
- 親機からファイルの編集
社内説明用で作ったのですが、せっかくなのっであげておきます。
外部からコンテナにアクセスできるようにする為に
コンテナを作成しただけだと、webコンテンツは表示できない
作成したコンテナと親機のportをつなげてあげないとwebコンテンツを表示できません
今回は作成したコンテナの80portと親機の10080portを接続します。

その前にポートとは?
簡単に言うと、インターネットからサーバーなどにアクセスするときの入り口
0番~65535番まであり
0~1023までを「ウェルノウンポート番号」
1024~49151までを「レジスタードポート番号」
49152~65535が自由に使用できるポート
80portがHTTPがに使われる等、ある程度決まっている。
ちなみに用途が決められているが、例えば80portをhttps(443portが基本)のサービスで使用できる(非推奨 )
詳細はこちらのサイトを参照
[【3分で把握】ポート番号とは?と代表的なポート番号まとめ](https://web.archive.org/web/20200925221149/https://eng- entrance.com/network-port)
dockerで作成したコンテナにアクセスするには、親機(windiws)とDockerコンテナを結び付けてあげないといけません。
そこで、dockerのオプションでポートを指定します
-dでバックグラウンドで実行
-pでポートを指定しています(親機のport:dockerコンテナのport)
–nameでコンテナの名前を指定しています
最後の「php:7.0-apache」で使用するイメージを指定しています
# docker run -d -p 10080:80 --name php70-apache php:7.0-apache
これで外部と通信が可能なコンテナが作成できました
http://親機のIP:10080/
でアクセスしてみましょう

このような表示があればapacheが動作しています。
つづいて「index.php」を書いてみましょう
# docker exec -ti php70-apache bash
このコマンドでdockerコンテナにログインできます。
そして「index.php」を生成します
# echo '<?php phpinfo();' > index.php
ログアウトしておきましょう
# exit
もう一度さっきのURLをたたきましょう
phpinfoが表示されていれば成功です。

ボリュームの作成
コンテナにアクセスはできたが、ファイルを編集するにはコンテナに入って作業する必要がある。
それは非効率なので親機とコンテナに共有ファイルを設定する
Dockerでは「volume」と言われている
本来の使用用途
Dockerではコンテナを停止させると、データがなくなる(揮発性)ので
データを永続化させる為に、親機にデータを置いておく。
すると、起動した際に指定したフォルダを見に行くので
データが永続化される
Docker、ボリューム(Volume)について真面目に調べた
ボリューム(Data Volume)とは
- ボリュームとは、データを永続化できる場所のことである。
ぜんぜんわからない、俺たちは雰囲気で Docker の Volume を使っている

今回は以下のようにする
親機
C:\docker\php70-apache
Dockerコンテナ
/var/www
親機にはあらかじめフォルダを作成しておく
コマンドは以下のようになる
▶実行する前に「php70-apache」という名のコンテナは削除しておく◀
# docker run -d -p 10080:80 --name php70-apache -v C:\docker\php70-apache:/var/www php:7.0-apache
起動しているかの確認
docker psで確認してもいいが、ここが緑色になっていると成功している

volumeが正しく生成されているか確認
親機の先ほど設定した階層を確認
C:\docker\php70-apache
この階層に「html」というフォルダがあれば成功している
親機からファイルの編集
先ほど生成されたhtmlフォルダの中に「index.php」を生成し以下の内容を記述する
<?php
phpinfo();
http://自分のIP:10080/
にアクセスしphpinfoが表示されていれば成功