目次

    1. 外部からコンテナにアクセスできるようにする為に
  1. ボリュームの作成
  2. volumeが正しく生成されているか確認
  3. 親機からファイルの編集

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

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

コンテナを作成しただけだと、webコンテンツは表示できない

作成したコンテナと親機のportをつなげてあげないとwebコンテンツを表示できません

今回は作成したコンテナの80portと親機の10080portを接続します。

![](https://web.archive.org/web/20200925221149im_/https://i0.wp.com/sho- kun.com/wp- content/uploads/2019/05/図面1.jpg?resize=1076%2C638&ssl=1)![](https://web.archive.org/web/20200925221149im_/https://i0.wp.com/sho- kun.com/wp-content/uploads/2019/05/図面1.jpg?resize=1076%2C638&ssl=1)

その前にポートとは?

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

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/

でアクセスしてみましょう

![](https://web.archive.org/web/20200925221149im_/https://i2.wp.com/sho- kun.com/wp- content/uploads/2019/05/キャプチャ-2.png?resize=519%2C154&ssl=1)![](https://web.archive.org/web/20200925221149im_/https://i2.wp.com/sho- kun.com/wp-content/uploads/2019/05/キャプチャ-2.png?resize=519%2C154&ssl=1)

このような表示があればapacheが動作しています。

つづいて「index.php」を書いてみましょう

# docker exec -ti php70-apache bash

このコマンドでdockerコンテナにログインできます。

そして「index.php」を生成します

# echo '<?php phpinfo();' > index.php

ログアウトしておきましょう

# exit

もう一度さっきのURLをたたきましょう

phpinfoが表示されていれば成功です。

![](https://web.archive.org/web/20200925221149im_/https://i0.wp.com/sho- kun.com/wp- content/uploads/2019/05/キャプチャ-3.png?resize=938%2C885&ssl=1)![](https://web.archive.org/web/20200925221149im_/https://i0.wp.com/sho- kun.com/wp-content/uploads/2019/05/キャプチャ-3.png?resize=938%2C885&ssl=1)

ボリュームの作成

コンテナにアクセスはできたが、ファイルを編集するにはコンテナに入って作業する必要がある。

それは非効率なので親機とコンテナに共有ファイルを設定する

Dockerでは「volume」と言われている

本来の使用用途

Dockerではコンテナを停止させると、データがなくなる(揮発性)ので

データを永続化させる為に、親機にデータを置いておく。

すると、起動した際に指定したフォルダを見に行くので

データが永続化される

Docker、ボリューム(Volume)について真面目に調べた

ボリューム(Data Volume)とは

  • ボリュームとは、データを永続化できる場所のことである。

ぜんぜんわからない、俺たちは雰囲気で Docker の Volume を使っている

![](https://web.archive.org/web/20200925221149im_/https://i1.wp.com/sho- kun.com/wp- content/uploads/2019/05/図面1-3.jpg?resize=1000%2C593&ssl=1)![](https://web.archive.org/web/20200925221149im_/https://i1.wp.com/sho- kun.com/wp-content/uploads/2019/05/図面1-3.jpg?resize=1000%2C593&ssl=1)

今回は以下のようにする

親機

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で確認してもいいが、ここが緑色になっていると成功している

![](https://web.archive.org/web/20200925221149im_/https://i1.wp.com/sho- kun.com/wp- content/uploads/2019/05/キャプチャ-4.png?resize=1000%2C538&ssl=1)![](https://web.archive.org/web/20200925221149im_/https://i1.wp.com/sho- kun.com/wp-content/uploads/2019/05/キャプチャ-4.png?resize=1000%2C538&ssl=1)

volumeが正しく生成されているか確認

親機の先ほど設定した階層を確認

C:\docker\php70-apache

この階層に「html」というフォルダがあれば成功している

親機からファイルの編集

先ほど生成されたhtmlフォルダの中に「index.php」を生成し以下の内容を記述する

<?php
phpinfo();

http://自分のIP:10080/

にアクセスしphpinfoが表示されていれば成功