Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

docker(80)「DockerでPHP7.0×Apacheの環境を構築する@kurkuru」IT業界新人利用時の16の壁(mac mini編)

DockerでPHP7.0×Apacheの環境を構築する@kurkuru
https://qiita.com/kurkuru/items/fa7401a01c4d5dd98e4a

はじめに

IT業界の新人の人が、PHPを利用する作業があったため、追試を兼ねて実行してもらった。自分ではApacheの構築は10回くらい、PHPは1回くらいと何も教えることがない。

こちらが計画した手順とは異なる手順で実行してもらえた。
一歩一歩、追加するような方法を考えていた。
理解できるところは飛ばして、無駄な作業をしなかった。

手順通りにやれという指導がいかに無駄かが分かった。
うまくいかないことがあってから、それならと、一歩づつ示す手順を示せばよい。

指導する側が、実は指導されなければならないことを実感した。

主要事項

1 Apache 利用
Webサーバで利用が多い。

2 docker 利用
 Windows, Macintosh, Linuxのどこからでも、いつでも、様々な環境をたくさん立ち上げて試験がしやすい。

3 PHP利用
 何やら使うらしい。

PHP初めて利用の新人が遭遇した壁、壁、壁。
でもdocker使わずにぶつかって乗り越えた壁よりも、再現性がしやすく、構築の手間、保守の手間、試験の手間を考えると、圧倒的に便利。

現地、現物によっては違う壁がいっぱいあるかもしれない。
そこここの壁を乗り越えてPHPにたどり着こう。

また、同じ環境をRaspberry PIでも構築し、dockerの動作とRaspberry PIの動作を確かめ、どういう試験はdockerでやるとよく、どういう試験はRaspberry PIで試せるかを確認しておきたい。

p.s.
上記サイトでのdocker利用はDebian9.4になっていた(実行時点で違うかも)。

確認

# cat /etc/debian_version
9.4

ubuntu, RaspbianもDebian系のapt-getが利用できる。

IT業界の新人が利用する時の16の壁(mac mini編)。

環境の壁、組織の決定事項の壁、画面の類似性による混同の壁など様々。

1電源が入らない

mac miniの電源は、後ろ右のボタンです。

Qiita内関連資料

Mac mini 21台常備試験・研修室
https://qiita.com/kaizen_nagoya/items/3fc572d06eafe15a4c35

2マウスが動かない

電池式無線マウスです。電池が切れたかもしれません。
電池入れ替えます。

3 網(network)が繋がらない。

ごめんなさい。ここ、Macアドレス認証してます。
線を繋いだだけでは繋がらないんです。

ここから先はチチンプイプイ。ここでMacアドレス認証を登録していただくか、Mac アドレス認証を得た機器で繋いでいただくかのどちらか。

3.1 確認方法

3.1.1 ifconfig
網(network)の設定状況がわかります。どの界面(interface)にどの番地(address)が設定できているかがわかります。
lo0がloopbackで、文字ではlocalhost、番地では127.0.0.1です。自分自身を網の先の機器として処理できます。後ほど、ブラウザのURLにlocalhostを書きます。自分のloopbackインタフェースを通じて機能します。

i$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
    inet 127.0.0.1 netmask 0xff000000 
    inet6 ::1 prefixlen 128 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
en0: 
    (略)
    status: inactive
awdl0: 
    (略)
    status: active
en1: 
   (略)
    status: inactive
en2: 
    (略)
    status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
    inet6 fe80::d88d:6924:b76f:9e22%utun0 prefixlen 64 scopeid 0xb 
    nd6 options=201<PERFORMNUD,DAD>

3.1.2 ping
導通確認・遅延測定命令。Windowsでは4回だけですが、Linux, Macではずっと表示し続けます。「CTRL」キーを押しながら「C」を押してください。localhostにpingすれば、網の遅延ではなく、ping処理の界面(interface)までの遅延が測定できます。(遅延測定が専門。強調しておきたい)

$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.197 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.207 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.168 ms
^C

3.1.3 Wireshark
MacintoshにWiresharkを導入する6つの壁
https://qiita.com/kaizen_nagoya/items/69eb2d357a125f5368e1

4 dockerに接続できない

某所で、docker利用を禁止しています。
dockerの接続は門(gateway)で閉じてます。

試験用、教育用のネットワークでは、かなりの範囲が使えます。
繋がる網から利用しましょう。

4.1確認方法

wiresharkでdockerに接続する際の、門での応答などを収集してみてください。

5 dockerが導入できない

ごめんなさい。dockerの導入の手引きが不十分でした。
docker for macの入れ方は、例えばこちら。

$ brew cask install docker

5.1 確認方法

brew cask install dockerをもう一度入れる

$ brew cask install docker
Error: It seems there is already an App at '/Applications/Docker.app'.

6 brewが入っていない。

brew自体が入っていなければ
MacにHomebrewを導入する方法
https://qiita.com/balius_1064/items/ac7dff5ef10eaf69996f

6.1 確認方法

$ brew update

7 command line toolが入っていない。

Xcodeが入っていてもcommand line toolは自動的にははいりません。昔はウェブで探すのが面倒だった。今は、次のコマンド一発。

xcode-select --install

7.1 確認方法

$ brew --config
HOMEBREW_VERSION: 1.6.6
ORIGIN: https://github.com/Homebrew/brew
HEAD: e4c02fafdaef5676cf40dd6d16e74976cf54b265
Last commit: 6 days ago
(略)
Clang: 9.1 build 902
macOS: 10.13.4-x86_64
CLT: 9.3.0.0.1.1521514116

または

$  pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
package-id: com.apple.pkg.CLTools_Executables
version: 9.3.0.0.1.1521514116

8 Xcodeが入っていない。

APP storeアプリでXcodeで検索、導入。

8.1 確認方法

$ $ cc b.c
clang: error: no such file or directory: 'b.c'
clang: error: no input files

9 dockerが動かない

ごめんなさい。dockerの起動の手引きが不十分でした。
dockerのmacでの起動は、dockerアプリを起動してから
「ターミナル」を立ち上げてdockerコマンドを入力します。
dockerアプリを起動していないと、「ターミナル」でdockerと入力しても、そんなコマンド知らないと言われます。

$ docker pull php
Using default tag: latest
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

9.1 確認方法

「ターミナル」でdocker imagesと入力する。

$ docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

10 「$」文字、「#」文字を入れてエラーになった

$ $ docker run -d --name php70-apache php:7.0-apache
-bash: $: command not found

$はmacosの入力促進記号(prompt)です。$文字を入れる必要はありません。dockerでは#になっているかもしれません。

11 dockerで入力すべきものをmacで入力して動かなかった。

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

$で始まっているのでmacosで入れるものだと思った。

bash: index.php: Permission denied

別のエラーが出たこともある。

12 フォルダが作れない

$ docker run -d -p 80:80 -v /Users/y-tsubuku/docker/php70-apache/www:/var/www/html --name php70-apache php:7.0-apache
aff201b308023e4149c753b9f77a2eedf81ce035af584f1d152eec8783553104
docker: Error response from daemon: error while creating mount source path '/Users/y-tsubuku/docker/php70-apache/www': mkdir /Users/y-tsubuku: permission denied.

そこでディレクトリを作りに行った。

cd /Users
mkdir y-tsubuku
mkdir: y-tsubuku: Permission denied

ディレクトリ作り必要はなく、自分のディレクトリを指定すればよかった。

それならコマンドで以下のように記載されていればよかったかも。

$ docker run -d -p 80:80 -v ~/docker/php70-apache/www:/var/www/html --name php70-apache php:7.0-apache

13 php70-apacheフォルダが分からない。

dockerでPHPがエラーで動いていていない。動かす前だったのでフォルダがない。

13.1 確認方法

cd ~/docker
ls

14 dockerでPHPが動いた状態だったのでエラーになった。

dockerのPHPを止めずに、次のdockerでPHPを動かそうとしたらエラーになった

You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

15 macで入力すべきコマンドをdockerで打ってしまった。

入力促進記号(prompt)の形の違いを意識していないと、
自分が今、macのコマンドを打っているのか、
dockerの中のlinuxのbashコマンドを打っているのか
分からなくなる。

# vi
bash: vi: command not found

16 そうだ、素のdockerにはvi入っていなかった。

# apt update
# apt install vim -y
# apt install sudo

apt-getはaptで動くようになっている。

dockerの素のubuntuにはsudoも入っていない、、、。

参考文献(reference)

docker入門予定
https://qiita.com/kaizen_nagoya/items/88beed331a1ba814a500

生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2

docker利用を勧める256の理由(現在12)
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbe

今日のdocker error
https://qiita.com/kaizen_nagoya/items/940189904f57e1d0b249

dockerで画面表示
https://qiita.com/kaizen_nagoya/items/a353862ec69fccce8bc2

dockerfile
https://qiita.com/kaizen_nagoya/items/cbb6c2c8da78bcbffb08

文書履歴(document history)

ver. 0.10 初稿20180529
ver. 0.11 10項目から16項目に追加。mac編を明記。 20180530
ver. 0.21 表現補足追記 20180531
ver. 0.22 詳細追記 20180601
ver. 0.23 参考資料追記 20190222
ver. 0.24 追記 20190813
 
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

kaizen_nagoya
I'm a network designer.I work on TOPPERS SmallestSetProfile Kernel,MISRA-C, STARC RTL Design StyleGuide (Verilog-HDL),HAZOP,ISO/IEC15504(AutomotiveSPICE),ISO26262. I was an editor on ISO/IEC 15504.
https://researchmap.jp/blogs/blog_entries/view/81777/f691323917cc4ea12caf0b03b34c8ea0?frame_id=442673
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away