2023.03.09
CloudFront+Lambda@EdgeでHTTPリダイレクト
2018.02.05
開発環境・ツールDockerでCentOS7起動時にsystemctlが動かないとき
Mです。
どこかで「世界ではubuntuが人気で日本ではCentOSが人気」と見たのですが、
今Google Trendsを見ると日本でもubuntuが人気ですね。(といっても検索数が多いことしかわからないですが)
今度ubuntuの勉強をしておきます。
今回は少し前にやったことなのですが、
Windows10 DockerToolbox環境でCentOS7のコンテナを立ててサービスを起動しようとしたときの話です。
1 2 3 4 5 |
$ 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する。
1 2 3 4 5 |
$ 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となるようです。
用途に合わせて使い分けましょう。
最終的に今回の記事のものを全て実装すると
1 2 |
$ 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(カンガルー)
最近の記事
タグ検索
SNS共有