dockerのMySQLコンテナでなぜ”command: –innodb-use-native-aio=0″が必要な環境があるのか

takahashi 著者:takahashi

dockerのMySQLコンテナでなぜ”command: –innodb-use-native-aio=0″が必要な環境があるのか

ここ最近人気のコンテナ型仮想化技術であるDockerですが、Linuxを前提とした仕組みのため、他のOSではLinuxのカーネル何らかの方法で動作させ、そのうえでdockerを実装させる仕組みをとっています。

実はこの仮想化の方法によってはDockerでMySQLを動作させる際にdocker-compose.ymlを編集しないとMySQLが動作しない場合があります。

具体的には、Docker Toolboxで動作させた場合、docker-compose.tml内のMySQLの設定セクションで

command: --innodb-use-native-aio=0

を入れておかないとエラーになるというものです。

dockerでmysqlが起動できない。 – Fworx Tech Blog

なぜ上記の指定が必要かというと、デフォルトでは、データベースエンジン InnoDBの”非同期ディスク I/O”という機能が有効になっているのですが、このDockerToolboxなどの環境ではこの機能が利用できないようで、起動時にエラーになってしまう状況のようです。

なので、

--innodb-use-native-aio=0

のオプションを指定して非同期ディスクI/Oを無効化することでDocker Toolboxなどでも動作させることができるようになる、ということのようです。

せっかくどの環境でも同じ開発環境が実現できるようにdockerを使用しているのに、OSによってオプションを変えないといけない、というのはちょっと辛いものがありますね。

OSごとに異なる設定を読み込ませるような指定があればいいのですが…

  • この記事いいね! (0)

著者について

takahashi

takahashi administrator

Webエンジニア。 趣味で自宅サーバーを稼働中。 ファンタジーが好き。