【Docker】Webコンテンツを表示させ、親機から編集できるようにする

Docker

社内説明用で作ったのですが、せっかくなのっであげておきます。

外部からコンテナにアクセスできるようにする為に

コンテナを作成しただけだと、webコンテンツは表示できない
作成したコンテナと親機のportをつなげてあげないとwebコンテンツを表示できません
今回は作成したコンテナの80portと親機の10080portを接続します。

その前にポートとは?

簡単に言うと、インターネットからサーバーなどにアクセスするときの入り口

0番~65535番まであり

0~1023までを「ウェルノウンポート番号」

1024~49151までを「レジスタードポート番号

49152~65535が自由に使用できるポート

80portがHTTPがに使われる等、ある程度決まっている。

ちなみに用途が決められているが、例えば80portをhttps(443portが基本)のサービスで使用できる(非推奨

 

詳細はこちらのサイトを参照

【3分で把握】ポート番号とは?と代表的なポート番号まとめ

 

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が表示されていれば成功

 

 

 

コメント

タイトルとURLをコピーしました