dockerでコンテナが起動できない事象があったので、
調査しました。
確認環境
・Fedora Atomic 1.22.1
調査結果
コンテナ側のログには、 以下のエラーが出力されていて、
ファイル共有がうまくできていない状態でした。
# docker logs sample_mysql_1
....
ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
docker-compose.yml で、
ホスト側のディレクトリを共有する設定を行なっていたのですが、
コンテナ側でうまく参照できていないようでした。
services:
mysql:
volumes:
- "./docker/mysql/conf.d:/etc/mysql/conf.d"
調べていくと、selinuxが悪さをしているようで、
selinuxの状態を確認すると、有効化状態でした。
# getenforce
Enforcing
そのため、警告表示に変更してみました。
# setenforce 0
# getenforce
Permissive
サーバ再起動しても、設定が戻らないようにしたいので、
設定ファイルも更新しました。
設定値は、以下の3種類が用意されており、
SELinux を使う予定がないので無効状態にしました。
・ enforcing – セキュリティポリシーが有効
・ permissive – セキュリティポリシーが有効だが、警告を出力するだけ
・ disabled – セキュリティポリシーが無効
vi /etc/selinux/config
7行目を変更
› 変更前
SELINUX=enforcing
› 変更後
SELINUX=disabled
再度、コンテナ起動を行なってみたところ、
うまく起動できました。
# docker-compose up -d
Starting sample_mysql_1 ... done
Starting sample_app_1 ... done
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
492203cd838f sample_app "docker-php-entryp..." 42 hours ago Up 2 seconds 0.0.0.0:8080->80/tcp sample_app_1
f4001540889e sample_mysql "docker-entrypoint..." 42 hours ago Up 4 seconds 3306/tcp sample_mysql_1
誰かのお役に立てれば、幸いです。
コメントを書く