質問: ### 前提・実現したいこと ここに質問したいことを詳細に書いてください (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 DockerのCentOS7のコンテナにmysqlをインストールしました。 このコンテナをDBとして扱っていきたいです。 現在の状況としてはMySQLのインストールはできているはずです。 ``` [root@a3bae4fbddde /]# mysqld -V mysqld Ver 5.7.14 for Linux on x86_64 (MySQL Community Server (GPL)) ``` インストールはこのシェルスクリプトを実行する形で行っています。 ``` #!/bin/sh # vim yum -y install vim-enhanced # mysql yum remove mariadb-libs rm -rf /var/lib/mysql/ yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm yum info mysql-community-server yum -y install mysql-community-server systemctl enable mysqld.service echo " -== Complete Install ==-" mysqld -V ``` ### 発生している問題・エラーメッセージ MySQLを起動しようとすると以下のようなメッセージが出力されます。 ``` [root@a3bae4fbddde /]# systemctl start mysqld.service Failed to get D-Bus connection: Operation not permitted ``` ### 試したこと エラーメッセージを検索したところ下記ページが見つかりました。 http://qiita.com/yunano/items/9637ee21a71eba197345 初めはコンテナ作成時に`--privileged`オプションをつけていなかったためこれが原因かと思い つけたうえでコンテナを作成して接続してみるのですが上手く行きません。 コンテナ作成から接続まで ``` $ docker run -d -P -i -t -p 8080:80 --privileged --name dbserver -v ホストのパス/dbserver:/dbserver centos /bin/bash $ docker exec -it cha_db /bin/bash ``` ### 補足情報(言語/FW/ツール等のバージョンなど) 起動できないところで足踏みしていますが この後にも起きる問題などで注意したほうが良い点などももしよければ教えて下さい。 よろしくお願いします。
回答: systemd で動作させるなら実行するコマンドは /bin/bash ではなく /sbin/init にする必要があります。 ``` docker run -d ..中略.. centos /sbin/init ``` その他の注意点として、 * この方法だとコンテナを削除すると MySQL のデータも消えるので、コンテナを作りなおすことがあるならデータボリュームなど使うと良いです * `-p 8080:80` してますけど MySQL なら `-p 3306:3306` なのでは? * MySQL を動かすだけなら systemd よりも mysqld をフォアグラウンドで実行する方が良いかと思います * コンテナで bash を実行して手作業でセットアップするのは docker っぽくないので Dockerfile を使うほうが良いです * むしろ公式の mysql イメージ使うほうが楽だと思います(https://hub.docker.com/_/mysql/)