Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【WSL2】CentOS 7でDocker環境を作る!systemdエラーと「地味に面倒な」Apache起動・停止の解決策

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!
WindowsのWSL2環境で、古い CentOS 7 を動かしたく、WSLとdockerで設定作業を試みました。systemdの問題で、運用するのは最終的には断念したのですが、折角調べたので、参考のため残しておきます。
Docker Desktopの正しいインストール手順 から CentOS 7の導入、そして誰もがぶつかる Apacheの「起動・停止が面倒くさい問題」の回避策 までを解説します。

1. 全体の作業手順
今回の作業の流れは以下の5ステップです。
    1. Docker Desktop をインストールする(★重要チェックあり)
    2. CentOS 7 をWSL2にインストールする
    3. DockerとCentOS 7を 連携させる
    4. 発生する systemdエラーの原因 を知る
    5. 面倒な Apacheの起動・停止をラクにする方法 [1, 2]


2. Docker Desktopをインストールする(超重要!)
まずはWindows側の土台となるDocker環境を作ります。インストール中に絶対に外してはいけない重要なチェックがあるので注意してください。
    1. Docker Desktop公式ページ にアクセスし、「Download for Windows」をクリックしてインストーラー(.exe ファイル)をダウンロードします。
    2. ダウンロードしたファイルをダブルクリックして実行します。
    3. しばらくすると、インストールオプションの画面(Configuration)が表示されます。 [1, 2, 3]

⚠️ ここが一番の注意ポイント!
画面に表示される以下のチェックボックスに、必ずチェックが入っていることを確認してください。
    • [✓] Use WSL 2 instead of Hyper-V (recommended)
      (Hyper-Vの代わりにWSL2を使用する)
      [1]

💡 ここを忘れるとどうなる?
もしこのチェックを外してしまうと、古い仕組み(Hyper-V)でDockerが動いてしまい、今回の目的である「WSL2のCentOS 7とDockerを連携させる」ことができなくなります。必ずチェックがついていることを確認して「OK」を押してください。

    1. インストールが完了したら、指示に従ってPCを再起動(またはサインアウト)します。
    2. 再起動後、Docker Desktopの規約同意画面が出るので「Accept」を押し、アプリが起動して左下が「緑色のアイコン(Engine Running)」になれば準備完了です! [1]


3. CentOS 7をWSL2にインストールする
次にWindows上にCentOS 7の環境を作ります。GitHubのオープンソースツールを使うのが一番簡単です。
    1. GitHubのCentWSL配布ページ にアクセスします。
    2. リンクから CentOS7.zip をダウンロードします。
    3. ダウンロードしたZIPファイルを、自分のPCの好きなフォルダに解凍します。
    4. 解凍して出てきた CentOS7.exe をダブルクリックして実行します。
    5. 画面に「Installation Complete!」と表示されれば成功です。

PowerShellを開き、以下のコマンドで CentOS7 が登録されているか確認しましょう。
powershell
wsl -l -v
コードは注意してご使用ください。


4. Docker DesktopとCentOS 7を連携する
インストールしたDocker Desktopと、今入れたCentOS 7をガッチャンコさせます。
    1. Docker Desktopの設定(画面右上にある歯車マーク)を開きます。
    2. 左メニューの 「Resources」「WSL integration」 の順にクリックします。
    3. 画面の下の方にある 「CentOS7」のスイッチをON にします。
    4. 右下の 「Apply & restart」 を押して保存します。 [1, 2, 3, 4]

これで、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の 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
      
      コードは注意してご使用ください。

「起動したいだけなのにフォルダ作成コマンドも必要だし、停止するときもいちいち別の長いコマンドを叩かなきゃいけないなんて、開発効率が落ちてやってられない!」となりますよね。

7. 解決策:エイリアス(ショートカットキー)を作って一瞬で管理する!
この「起動・停止が地味に面倒くさい問題」は、Linuxのエイリアス(コマンドのショートカット機能)を設定することで解決できます。
一度設定してしまえば、次からは短い一言コマンドで起動も停止もできるようになります!
設定方法
    1. CentOS 7のターミナルで、設定ファイルを編集します。
      bash
      vi ~/.bashrc
      
      コードは注意してご使用ください。

    2. ファイルの一番下に、以下の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'
      
      コードは注意してご使用ください。

    3. 保存してファイルを閉じたら、設定を反映させます。
      bash
      source ~/.bashrc
      
      コードは注意してご使用ください。

設定後の使い方(めちゃくちゃラクになります!)
これからは、ターミナルで以下を打つだけで一瞬で切り替えが可能です。
    • 🚀 起動したいとき: ap-start と打つだけ
    • 🛑 停止したいとき: ap-stop と打つだけ
    • 🔄 再起動したいとき: ap-restart と打つだけ

Windowsのブラウザ(EdgeやChromeなど)を開き、http://localhost/ にアクセスしてテスト画面(Testing 123…)が表示されれば無事に成功です!

まとめ
    • Docker Desktopインストール時は 「Use WSL 2 instead of Hyper-V」のチェックが絶対必須
    • WSL2へのCentOS 7導入は CentWSL を使う。
    • Dockerとの連携は Docker Desktopの設定画面(WSL integration) でONにするだけ。
    • CentOS 7の systemctl はWSL2の仕組みと合わないためエラーになる。
    • 毎回手動で直接起動・停止するのはめちゃくちゃ面倒なので、 .bashrc にエイリアスを登録する のが一番手軽でラクな回避策! [1, 2]

Docker Desktopの設定さえ間違えなければ、あとはショートカット技を使って快適なCentOS 7環境が作れます。エラーに負けずに環境構築を成功させましょう!
タイトルとURLをコピーしました