Fedora Atomicで、dockerコンテナが起動しない

NO IMAGE

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

誰かのお役に立てれば、幸いです。

サーバ・インフラカテゴリの最新記事