Dockerでsystemctlでserviceが起動できない
centos7からsystemctlでserviceを起動するようになったが、Dockerで起動すると「Failed to get D-Bus connection: No connection to service manager.」というエラーメッセージがでて起動できないという問題が起こった。
1 | $ docker run -it centos:centos7 /bin/bash |
サービスを起動するためには以下の方法でコンテナを起動すればよい。
1 | $ docker run --privileged -d --name httpd centos:centos7 /sbin/init |
起動したコンテナでhttpdをinstallして起動する。
1 | docker exec -it httpd /bin/bash |
プロセスを確認。起動できている。
1 | ps aux | grep apache |
yunanoさんの記事が大変参考になった。
Dockerについて学ぶ
Dockerについてはいくつか書籍が出ているが、プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化が良さそうに思う。
目次を見てみると、インフラの基礎知識からDockerfileを使ったDockerの構築、Docker Composeの使い方、Docker Swarmを使ったマルチホスト環境でのDocker運用まで網羅してある。
また、Dockerの基礎的なことに加え、インフラの基礎とコンテナ仮想化技術についても説明してあるのでDockerを学びつつもインフラについても学べそうだ。
目次
第1章: 抑えておきたいシステム / インフラの知識
第2章: コンテナ仮想化技術とDocker
第3章: Dockerのインストールと基本コマンド
第4章: Dockerfileを使ったコードによるサーバ構築
第5章: Dockerイメージの共有 - Docker Registry
第6章: 複数コンテナの一元管理 - Docker Compose
第7章: マルチホスト環境でのDocker運用 - Docker Machine, Docker Swarm
第8章: クラウドでのDocker運用
Dockerの記事一覧
SHOYAN BLOGではDockerについていくつか記事を書いているので興味があれば見てほしい。
- Macを引っ越ししたらDockerデーモンが起動しなくなった
- docker-composeを使ってPHPコンテナとMySQLコンテナを連携させる
- Dockerのコンテナ間を繋ぐLinksを使ってPHPとMySQLコンテナを連携させる
- Dockerでlocaleを設定する
- GitHubにpushしたらDockerイメージを自動ビルドする
- Dockerのコンテナでyum Installが失敗する
- DockerコンテナにChefを流してみた
- Dockerでno Space Left on Deviceが出てbuildできなくなった
Dockerのサンプルコード
githubでDockerを使ったサンプルコードを公開しているのでこちらも参考にしてほしい。
DockerでRubyアプリケーションをホスティングするサンプルコード
docker-composeを使ってPHPコンテナとMySQLコンテナを連携させるサンプルコード
nginxとrubyをChefを使ってインストールするサンプルコード