今回は、Twitterでたまに話題に上がっていたDockerというものがさっぱり意味わからなかったので、初めてDockerを使ってみました。
そして、ブログのテスト環境用として、Dockerでローカルサーバー環境のWordPressを構築してみたので、それを紹介してきたいと思います。しかも、最新版PHPです。
私のTwitteタイムラインでは、エンジニアの方々のツイートが多く、時々Dockerという名前が流れていて、気にはなっていました。
その度に「Dockerとは?」みたいな感じでネット検索していましたが、イメージとかコンテナとか専門用語盛り沢山で、結局よくわからなくて放置していました。
ですが、つい最近、TwitterでDockerというワードがトレンド上位に上がっていて、
「今時Dockerを使えないと仕事にならない」
「Dockerが使えて当たり前」
「Dockerが使えないなんて信じられん」
みたいなニュアンスのツイートで溢れていました。
私は、全く無知だったので、完全な「Docker難民?」でした。
そんなわけで、この際、本気で使ってみることにしました。
私のWindows10パソコンでは、今までXAMPPを使ってローカルサーバー環境を構築していて、ブログ記事の下書きや、PHPやスクリプトのテストをしていました。
ですが、PHPやphpMyAdminのバージョンアップ、およびセットアップがとても面倒で、レンタルサーバーの環境と合わせることが困難でした。
ブログのメンテナンスでそんなことに時間が取られるのはアホらしいので、Dockerにすればもう少しサクッとできるのかも、と期待したところもあります。
結果、実際に使ってみるとやはりメチャメチャ便利で、PHPバージョンをサクッと変えられるし、WordPressを別バージョンで同じブラウザで表示することも可能でした。
初めての体験だったので「すげぇ」と思いましたね。
ですが、非力なPCだと動作が重くなるなどの欠点もありました。
それに、私の無知ゆえに、環境構築は苦戦しましたね。
それでも、今回はかなりDockerに対する知見が貯まったので、「Docker難民脱出?」することができたと思います。
ということで、Docker初心者の私なりの方法で、Dockerの簡単な使い方や、WordPress環境構築方法を説明してみます。
あくまで、私個人の備忘録です。
もし、誤り等がありましたら、コメント投稿等でご連絡いただけると助かります。
- Docker難民脱出するには、とにかく使ってみるべし
- Docker Desktop のメモリ使用状況
- 無料プランの使用可能範囲について
- Docker Desktop インストール (Windows 10)
- DockerでWordPress環境構築(PHP8.0)
- パソコンのフォルダを構成しておく
- レンタルサーバーからFTPソフトでダウンロードしたWordPressファイル群を移す
- docker-compose ファイルの作成
- wp-config.php ファイルの編集
- php.iniファイルを作成し、WordPressのアップロードファイルサイズの上限を変更しておく
- phpmyadmin-misc.ini ファイルを作成し、phpMyAdminのインポートサイズ上限を変更しておく
- docker-compose up -d コマンドで、イメージとコンテナを一括インストール実行
- まず、MySQLデータベースインポート
- MySQLデータベース内のURLを変更
- WordPressセキュリティ系プラグインはフォルダごと削除しておく
- WordPress管理画面にログイン
- PHPバージョン表示して確認(phpMyAdminでは確認できない!)
- ファイルの所有者やパーミッションをDockerコンテナ内で確認する方法
- Dockerデータを外部ドライブに置き、ディスク容量を節約する
- メモリ使用制限してくれる.wslconfigファイルについて
- NGINXサーバー構築は今後の課題
- 個人的トラブルシューティング
- コマンド集
- まとめ
【目次】
Docker難民脱出するには、とにかく使ってみるべし
TwitterのWebエンジニア界隈でよく見かける「Docker」という言葉。
その界隈ではDockerは使えて当たり前という標準アプリみたいです。
つい最近、Webエンジニア界隈でDockerを知らないだけで炎上して、Twitterのトレンドに上がったくらいです。
Dockerとは何なのか、ネットで調べても、私にとっては意味不明の事柄ばかり。
イメージとかコンテナとかの説明も多々見受けられますが、いくら読んでもサッパリ分かりません。
私は仮想イメージサーバーのXAMPPを使ってはいましたが、それでもよくわかりませんでした。
そもそもXAMPP自体のしくみもよくわかりません。
あまりにも何度もTwitterでDockerという言葉を目にするし、今時Dockerを使っていないのは常識外れみたいな風潮も見受けられたので、私はすっかり「Docker難民」になっていました。
ただ、今私が使っているXAMPPの環境はバージョンが古く、レンタルサーバーの本番環境と合わなくなってきたので、Dockerを使ってみることにしました。
すると、やっぱり、圧倒的に便利でした!
使ってみないと何も分かりませんでしたね。
イメージとかコンテナの概念も何となく分かりました。
要するに、イメージとはサーバー用アプリ、コンテナはそのアプリで作るWebサイト、みたいに思っておけば良いと分かりました(あくまで個人の見解)
WordPress、MySQL、phpMyAdminというアプリがイメージで、そのイメージで作成する複数のWebサイトがコンテナという感じです。
コンテナというと、動画のMPEG-4などにもありますが、それとは違う感じでした。(技術的には同じかも知れません)
要は、Dockerは使ってみて初めて分かるということです。
ただ、環境構築とコマンドの意味を理解するまでに、私は1週間くらいかかりました。
Docker使ってみて良かった点
実は、今回、レンタルサーバーからPHPバージョン8.0 が使えるようになったと通知がありました。
それが本番環境で使えるかどうかテストしたかったので、Docker導入は良い機会だったのです。
いざ、Dockerを使ってみると、PHPバージョンをサクッと変えてテストできますし、WordPressバージョンやMySQLバージョンもサクッと変えられて、こりゃスゲェ~と思いました。
しかも、バージョンの異なるWordPressをマウントして、一つのパソコンの同じブラウザ上で異なるバージョンのWordPressサイトを表示できたのです。
これはほんとスゲェです。
これはXAMPPでは多分できなかったと思います。
また、メモリ節約のため、不要になったDockerイメージをサクッと削除して、必要になった時にサクッとインストールできるのは何とも手軽ですね。
私の様な非力なノートパソコン環境ではとても重宝します。
そして、Docker Desktop を終了してしまえば、メモリを全解放してくれます。
そして、Dockerを使うことによって、パソコン一つで、サーバーというものの構成や動作が勉強できるのも良いですね。
そして、Linuxのコマンドを勉強する良い切っ掛けになりました。
近々、Raspberry Piも使ってみようかなと思っていたところなので、とても良い勉強になりました。
そんなわけで、DockerはWebエンジニア界隈で必須といわれる所以が分った気がします。
要は使ってみるべし!
ただ、一つ、私が期待したのは、Windows DockerでMac環境が実現できるのかな? と思ったのですが、さすがにダメでした。
残念…。
悪かった点(あくまでDocker初心者の意見)
一通りDockerを使ってみて、イマイチだなと思った事は、メモリの使用率です。
私のパソコンは8GBしかメモリを積んでいないので、Docker起動直後はすぐに一杯になってしまい、パソコンの動作が重くなります。
(メモリの使用状況についての詳細は次の章で紹介しています。)
WordPressとMySQLとphpMyAdmin、それぞれ1つずつくらいなら、Dockerで使用するメモリは2GBくらいで済みますが、WordPressのサイトを2つ(つまりコンテナ2つ)、MySQLも2つにすると、メモリは3.5GBくらいにまで膨れ上がり、Google Chromeブラウザはまともに動きません。
WS2のメモリ使用制限設定を使って2GBに制限しても、Docker無しの状態で既にメモリ全体の60%くらい使ってしまっていたので、あまり効果がありませんでした。
まぁ、WordPress1サイト分しか起動しないならば、少々パソコン操作が重くなっても、テスト環境と思って割り切ってしまえば使えないことは無いと思います。
そして、後で述べていますが、Cドライブ容量節約のために、Dockerデータを外部のドライブへ移行すると、さらに動作が重くなります。
いずれにしても、Dockerを使う場合は、出来るだけハイスペックPCでないと辛いですね。
その分、今まで使っていたXAMPPの方がメモリ占有率は低く抑えられていて、快適でしたね。
ただ、XAMPPは先ほど述べたようにバージョンアップやセットアップが大変で、頻繁に変わるレンタルサーバー環境に合わせることが難しいので、今後使う気になれません。
また、XAMPPの時にはほとんど使わなかったコマンドですが、Dockerの場合はガッツリ使います。
そして、当たり前ですが、コマンドをある程度理解しなければいけないことです。
しばらく使わないでいて、コマンドを忘れると、その都度調べる羽目になります。
要するに、エンジニア用のソフトなのです。
Windows10の場合、コマンド入力にPowerShellを使いますが、それにWSL2 (Windows Subsystem for Linux)というLinux環境アプリを入れてDockerをインストールします。
それにより、PowerShellコマンドとWSL2コマンドを覚えなければならず、しかも、DockerコマンドとDocker composeコマンド、更に別途Linuxコマンドも使う羽目になります。
WSL2を使うなら、PoweShellでそのままLinuxコマンド使えるようにしてくれよ! と声を大にして言いたい(あくまでDocker初心者の意見)。
ただ、実は、Twitterで、「しおじゃけ」さんから教えて頂いて分かったのですが、WSL2側で別途Ubuntuをインストールすれば、WSL2コマンドでLinuxコマンドを叩けるそうです。
私はまだ試せていないのですが、近々試してみようと思っています。
しおじゃけさん、教えて頂きありがとうございました。
m(_ _)m
以上、今の所、自分が思った欠点はこれくらいです。
私の場合は、PHPやWordPressバージョンを変えてテストできるという利点の方が、欠点を上回っているので、今後Dockerを使っていこうと思います。
Docker Desktop のメモリ使用状況
では、Docker Desktopのメモリ使用状況を見てみます。
先ほど述べたように、私のパソコンのメモリは8GB です。
Windows タスクマネージャのパフォーマンスを見てみます。
まず、ブラウザを起動して、Google検索ページだけを開いた状態で既にこのメモリ使用状況でした。
(図001)
それから、Docker Desktopで、WordPress、MySQL、phpMyAdminをインストールして、コンテナも作成した状態で起動すると、下図の様な感じでモリモリとメモリが上昇していきます。
(図002)
Docker Desktop が完全に起動し切るまで1分くらいかかり、下図の様になりました。
ほぼ、8GBのメモリを使いきっているので、他のアプリの動作は重くなります。
(図003)
これは、Vmmemというプロセス使用が2GBを超えていました。
WordPress、MySQL、phpMyAdmin のコンテナはそれぞれ1つでしたが、WordPressサイトを2つ作成すると、WordPressコンテナが2つ、MySQLコンテナが2つになり、Vmmemプロセスは3.5GBにまでなりました。
では、Docker をQuit して終了すると、下図の様にメモリが下がっていきます。
(図004)
すると、下図の様に、一旦8割くらいのところで止まりますが、更に1分くらいすると、Docker Desktopが完全終了し、下図の様にメモリを全開放してくれます。
(図005)
こんな感じで、XAMPPとは違って、とんでもなくメモリを食うので、私の場合、Dockerを起動する時は起動中のアプリを最低限にして、メモリを節約するしかありませんでした。
無料プランの使用可能範囲について
【2021/7/11時点】
公式のこちらのページでは、以下の情報でした。
- 無制限の公開リポジトリ
- Dockerデスクトップの継続的更新
- イメージのpullリクエストは制限あり。
- Dockerデスクトップには、DockerEngineとKubernetesが含まれている。
- 二要素認証
ただ、ネット上の多くの情報は以下でした。
- サインインしない場合のイメージのpull回数は、6時間あたり100回。
サインインした場合は、6時間あたり200回。
イメージのpullリクエストというのが分かりにくいのですが、簡単に言えば、アプリをダウンロードする回数に制限があるようなものだと思えば良いと思います。
後々わかってくるのですが、Dockerはメモリを節約するために、サクッとアプリ(正確にはイメージ)を削除したりダウンロードしてインストールしたりすることができて、それを短時間で何度も行うことが出来て便利です。
私も最初はインストールに何度も失敗して、1日に数十回もイメージをpullリクエストしていました。
でも、6時間あたり100回を超えるなんて、個人の趣味範囲でローカル環境利用限定ならばほとんど無いので、サインイン登録しなくても良いかと思われます。
ただ、Docker Hubを自由に使いたければ、サインイン登録した方が良いと思います。
では、次以降のページで、実際にDockerをインストールする方法や、DockerでWordPressを構築する方法を紹介してみます。
コメント