WindowsのWSL2環境で、古い CentOS 7 を動かしたく、WSLとdockerで設定作業を試みました。systemdの問題で、運用するのは最終的には断念したのですが、折角調べたので、参考のため残しておきます。
Docker Desktopの正しいインストール手順 から CentOS 7の導入、そして誰もがぶつかる Apacheの「起動・停止が面倒くさい問題」の回避策 までを解説します。
1. 全体の作業手順
今回の作業の流れは以下の5ステップです。
2. Docker Desktopをインストールする(超重要!)
まずはWindows側の土台となるDocker環境を作ります。インストール中に絶対に外してはいけない重要なチェックがあるので注意してください。
-
- Docker Desktop公式ページ にアクセスし、「Download for Windows」をクリックしてインストーラー(
.exeファイル)をダウンロードします。 - ダウンロードしたファイルをダブルクリックして実行します。
- しばらくすると、インストールオプションの画面(Configuration)が表示されます。 [1, 2, 3]
- Docker Desktop公式ページ にアクセスし、「Download for Windows」をクリックしてインストーラー(
⚠️ ここが一番の注意ポイント!
画面に表示される以下のチェックボックスに、必ずチェックが入っていることを確認してください。
-
[✓] Use WSL 2 instead of Hyper-V (recommended)
(Hyper-Vの代わりにWSL2を使用する) [1]
💡 ここを忘れるとどうなる?
もしこのチェックを外してしまうと、古い仕組み(Hyper-V)でDockerが動いてしまい、今回の目的である「WSL2のCentOS 7とDockerを連携させる」ことができなくなります。必ずチェックがついていることを確認して「OK」を押してください。
-
- インストールが完了したら、指示に従ってPCを再起動(またはサインアウト)します。
- 再起動後、Docker Desktopの規約同意画面が出るので「Accept」を押し、アプリが起動して左下が「緑色のアイコン(Engine Running)」になれば準備完了です! [1]
3. CentOS 7をWSL2にインストールする
次にWindows上にCentOS 7の環境を作ります。GitHubのオープンソースツールを使うのが一番簡単です。
-
- GitHubのCentWSL配布ページ にアクセスします。
- リンクから
CentOS7.zipをダウンロードします。 - ダウンロードしたZIPファイルを、自分のPCの好きなフォルダに解凍します。
- 解凍して出てきた
CentOS7.exeをダブルクリックして実行します。 - 画面に「Installation Complete!」と表示されれば成功です。
PowerShellを開き、以下のコマンドで
CentOS7 が登録されているか確認しましょう。powershell
wsl -l -v
コードは注意してご使用ください。
4. Docker DesktopとCentOS 7を連携する
インストールしたDocker Desktopと、今入れたCentOS 7をガッチャンコさせます。
これで、CentOS 7のターミナル内からWindows側の
docker コマンドが自由に使えるようになります。5. なぜApacheが起動しない?systemdエラーの壁
通常、CentOS 7でApache(WEBサーバー)を起動するときは、以下のコマンドを打ちます。
bash
# 通常のコマンド(エラーになります)
sudo systemctl start httpd
コードは注意してご使用ください。
❌ エラー例:
Failed to get D-Bus connection: Operation not permitted💡 原因は「世代のズレ」
WSL2の新しいシステムは、アプリの管理に「cgroup v2」という新しい仕組みを使っています。
しかし、古いCentOS 7の
このシステム同士の世代のズレのせいで、
しかし、古いCentOS 7の
systemd は、昔の「cgroup v1」にしか対応していません。このシステム同士の世代のズレのせいで、
systemctl コマンドが一切使えない状態になってしまうのです。6. 【超面倒】systemdが使えないと起動・停止はどうなる?
systemctl が使えないため、Apacheを動かすには「systemdを通さずに、毎回直接コマンドで起動・停止する」という裏技を使うしかありません。しかし、普通にやるとこれが非常に面倒くさいのです。
普通にやった場合の面倒な手順
毎回CentOS 7のターミナルを開いて、以下の長いコマンドをいちいち手入力する必要があります。
-
- Apacheを起動するとき:
bash
sudo mkdir -p /var/run/httpd && sudo httpd -k startコードは注意してご使用ください。 - Apacheを停止するとき:
bash
sudo httpd -k stopコードは注意してご使用ください。
- Apacheを起動するとき:
「起動したいだけなのにフォルダ作成コマンドも必要だし、停止するときもいちいち別の長いコマンドを叩かなきゃいけないなんて、開発効率が落ちてやってられない!」となりますよね。
7. 解決策:エイリアス(ショートカットキー)を作って一瞬で管理する!
この「起動・停止が地味に面倒くさい問題」は、Linuxのエイリアス(コマンドのショートカット機能)を設定することで解決できます。
一度設定してしまえば、次からは短い一言コマンドで起動も停止もできるようになります!
設定方法
-
- CentOS 7のターミナルで、設定ファイルを編集します。
bash
vi ~/.bashrcコードは注意してご使用ください。 - ファイルの一番下に、以下の3行をそのまま貼り付けます。
bash
# Apacheの起動・停止ショートカット alias ap-start='sudo mkdir -p /var/run/httpd && sudo httpd -k start' alias ap-stop='sudo httpd -k stop' alias ap-restart='sudo httpd -k restart'コードは注意してご使用ください。 - 保存してファイルを閉じたら、設定を反映させます。
bash
source ~/.bashrcコードは注意してご使用ください。
- CentOS 7のターミナルで、設定ファイルを編集します。
設定後の使い方(めちゃくちゃラクになります!)
これからは、ターミナルで以下を打つだけで一瞬で切り替えが可能です。
-
- 🚀 起動したいとき:
ap-startと打つだけ - 🛑 停止したいとき:
ap-stopと打つだけ - 🔄 再起動したいとき:
ap-restartと打つだけ
- 🚀 起動したいとき:
Windowsのブラウザ(EdgeやChromeなど)を開き、
http://localhost/ にアクセスしてテスト画面(Testing 123…)が表示されれば無事に成功です!まとめ
Docker Desktopの設定さえ間違えなければ、あとはショートカット技を使って快適なCentOS 7環境が作れます。エラーに負けずに環境構築を成功させましょう!

