質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

501閲覧

windows10 + WSL2(UBUNTU) のドッカーにCentOS7をインストールし起動したい

tesopgmh

総合スコア146

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2023/04/20 11:55

実現したいこと

windows10 + WSL2(UBUNTU) のドッカーにCentOS7をインストールし
Dドライブにあるフォルダを対象に、httpdを起動したい

前提

ドッカーで以下の通り設定しました
GUIから
General>Use the WSL 2 based engine チェック
Resources>Ubuntu-22.04 ON

パワーシェルを起動

$ docker pull centos:centos7 $ docker run --privileged -d -v D:/server:/var/www/html --name centosq -p 80:80/tcp centos:centos7 /sbin/init $ docker exec -it centosq /bin/bash # yum install -y httpd # systemctl start httpd

発生している問題・エラーメッセージ

Failed to get D-Bus connection: No such file or directory

試したこと

・googleで調べると、privilegedがついていないためだと出てきますがつけております
・コンテナを消してwindowsを再起動、再生成しましたが同様のエラーが出ました
・コンテナを消してパワーシェルを管理者権限で起動して、再生成しましたが同様のエラーが出ました
・UBUNTU側から操作しましたが同様のエラーが出ました
・chatgptに確認すると以下の案が出されましたが実行しても同様のエラーが出ました

Dockerfileを作成して、systemdをインストールする

FROM centos:centos7 # Install systemd and other necessary packages RUN yum -y install systemd; yum clean all; \ (cd /lib/systemd/system/sysinit.target.wants/; \ for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; # Enable systemd ENV init /lib/systemd/systemd CMD ["/lib/systemd/systemd"]

Dockerfileをビルドして、Dockerイメージを作成する

docker build -t centos-systemd .

Dockerコンテナを起動するときに、systemdを使用するように設定する

docker run --privileged -v D:/server:/var/www/html --name centosq -p 80:80/tcp centos-systemd

chatgptもお手上げだそうで、この後は意味不明の返答が返ってきます

わかる方お教えいただけますと幸いです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bsdfan

2023/04/21 05:26

dockerでhttpdを起動するのが目的なら、systemd は不要で httpd をforegroundで起動すればいいです。(公式の httpd のイメージもそうなっています) どうしても systemd を使いたい理由があったら別ですが、苦労してまでdockerコンテナ内でsysytemdを起動させる必要はないですよ。
tesopgmh

2023/04/21 06:35

ありがとうございます いただいたヒントをChatGPTに入れたところhttpdは起動できました 1.Dockerfileを作成する。 FROM centos:centos7 RUN yum -y install httpd EXPOSE 80 CMD ["/usr/sbin/httpd", "-DFOREGROUND"] 2.Dockerイメージをビルドする。 docker build -t myhttpd . 3.Dockerコンテナを起動する。 docker run -d -p 80:80 myhttpd 今までコンテナ内でsystemctlが問題なくできていて レガシーのソースコードを触るとき dockerのGUIソフトで再生ボタン停止ボタンでレガシー環境にさっと切り替えられたりとても重宝していたのですが 今後はフォアグラウンドでコマンドを指定して~など起動しなければならないなど大変そうです 今まで複数台のPCで同一環境で問題なくやれていたのですが アップデートでこうなってしまったんですかね 今まで通りの使い勝手も手に入れたいので質問はこのまま継続します、ありがとうございました
bsdfan

2023/04/21 07:23

今までできていたことが、できなくなったんですね。 cgroup が v1 から v2 に変わったとかではないですか? docker info で cgroup version をチェックしてみてください。
tesopgmh

2023/04/21 08:09

ありがとうございます どちらが原因かわかりませんが ubutntuとdockerのバージョンを一つ下げたところ出来るようになりました 私がやりたいことは古いバージョンでしかやれないようなので古いバージョンを使いたいと思います ありがとうございました
guest

回答1

0

ubutntuとdockerのバージョンを一つ下げたところ出来るようになりました
同じエラーが出て困る人が出てくると思うので最新版での回避方法を知っている方お教えくださいませ

Ubuntu 20.04.6 LTS
Docker Desktop 3.6.0

余談ですが
最新版のエラー回避方法はChatGPTは知らないのでやはり人力のQ&Aはまだまだ必要ですね

投稿2023/04/21 08:11

編集2023/04/21 08:16
tesopgmh

総合スコア146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問