RADL ひよっこエンジニアの備忘録 2年目 奮闘記
reddit.epicplugins.com 
want to join? in seconds

ついに解決した!docker で centos7 コンテナ内にてsystemctl コマンドを使う!

今までdockerでコンテナ作ったことあるのですが、centos6でしか作ったことありませんでした。
centos7のコンテナで新しい作品でも作ってみようかなーと思っていたらなんと・・・systemctlが使えないとう状況に陥りました。
* DOCKERFILEを使わない方法でコンテナ開発をしています。

コンテナ内で色々と作業をして、最後にcommitしてイメージを作成します。
この方法だと第3者にどういうコンテナなのか伝える方法が皆無のためあまりおすすめしません。
ただ、これが一番楽なのでこの方法を用いてコンテナ開発をしています。

問題

# systemctl status httpd
Failed to get D-Bus connection: Operation not permitted

解決策

docker run --privileged -d -p 10080:80 centos /sbin/init
ed64bf

上記のオプションで一度起動させてから exec で入ります。(privilegedオプションが超重要!)

docker exec -it ed64bf /bin/bash
systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-03-24 14:25:38 UTC; 1s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 167 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/docker-ed64bf27f634bf1393bc93bea6d67fc30757b5a21804427f657b873548ac94c3.scope/system.slice/httpd.service
           ├─167 /usr/sbin/httpd -DFOREGROUND
           ├─168 /usr/sbin/httpd -DFOREGROUND
           ├─169 /usr/sbin/httpd -DFOREGROUND
           ├─170 /usr/sbin/httpd -DFOREGROUND
           ├─171 /usr/sbin/httpd -DFOREGROUND
           └─172 /usr/sbin/httpd -DFOREGROUND
           ‣ 167 /usr/sbin/httpd -DFOREGROUND

Mar 24 14:25:38 ed64bf27f634 systemd[1]: Starting The Apache HTTP Server...
Mar 24 14:25:38 ed64bf27f634 httpd[167]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, us...message
Mar 24 14:25:38 ed64bf27f634 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

わーい!出来た。

これでコンテナ開発が捗るぞ!

コメントを残す