ここ最近人気のコンテナ型仮想化技術である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ごとに異なる設定を読み込ませるような指定があればいいのですが…