2024.11.14
いまさらNode.jsを知ろう~環境構築も~
2018.02.05
開発環境・ツールDockerでCentOS7起動時にsystemctlが動かないとき
Mです。
どこかで「世界ではubuntuが人気で日本ではCentOSが人気」と見たのですが、
今Google Trendsを見ると日本でもubuntuが人気ですね。(といっても検索数が多いことしかわからないですが)
今度ubuntuの勉強をしておきます。
今回は少し前にやったことなのですが、
Windows10 DockerToolbox環境でCentOS7のコンテナを立ててサービスを起動しようとしたときの話です。
$ docker pull centos:latest $ docker run -it --name docker_test centos /bin/bash # yum install -y httpd # systemctl start httpd Failed to get D-Bus connection: Operation not permitted
普通に適当(雑の方の意味)に起動するだけだと動かないのです。
対策として下記の3つを使用することで、systemctlが使用できるようになります。
・—privilegedを使用する。
・/sbin/initで起動する。
・上記に合わせ、-itではなく-dで起動し、起動後にexecする。
$ docker run -d --privileged --name docker_test centos /sbin/init $ docker exec -it docker_test /bin/bash # yum install -y httpd # systemctl start httpd # systemctl status httpd
無事にapacheの起動ができました。
コンテナ作成時に-p 80:80のようにdockerのポートフォワード設定をしておけば、
ブラウザなどから実際にアクセスすることが可能です。
共有フォルダの作り方です。あると便利です。
-v <共有したいフォルダパス>:<共有するコンテナのフォルダパス><:roか:rwかなし>
を追加します。
roを付けるとread onlyとなり、書き込みができません。
rwを付けるとread writeとなり、書き込みもできます。
何も付けないとread writeとなるようです。
用途に合わせて使い分けましょう。
最終的に今回の記事のものを全て実装すると
$ docker run -d --privileged --name container_name -p 80:80 -v ~/share_folder:/var/share_folder:rw centos /sbin/init $ docker exec -it container_name /bin/bash
上記の起動方法を使用すると
・systemctlが使用できる
・80へつなぐとポートフォワードされてコンテナへと繋がる
・~/share_folderに共有フォルダがある
というコンテナが作成できるので、簡単な試行錯誤ができる環境ができます。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索