Docker for Macが重い!そんなときはvolumeに「delegated」オプションを付けてみよう

連続投稿4日目です。

あなたはローカル環境を何で構築していますか?僕は基本的にはDocker(for Mac)で構築しています。

僕の周りにDockerで構築している人が多いので世間一般的にも多いのか?と思っているのですがいかがでしょうか。

さて、今回はそのDockerで重くなったときの対処法です。

Docker for MacにWordPressを構築した際に、テーマのファイル数やプラグインが多くなると動きがモッサリ遅くなることがあります。そんなとき「しょうがないことだろう」と思っていたのですが、少し調べてみるとやはり原因がそれなりにあるんですね。苦笑

では早速、対処法を紹介していきます。

Docker for Macが遅い原因

マウントしているVolumeが原因のようです。Volumeの読み書きを同期するのですが、その同期の精度がデフォルトでは完全に同期する仕様になっています。
詳しくはDocker公式の記事をご覧ください。

Docker for Macを高速化しよう

結論から言うと、docker-compose.ymlファイルのvolume引数に下記のオプションを設定してあげます。
高速化する場合は「cached」または「delegated」を引数に使用します。

オプション名パフォーマンス一貫性
consistent完全な一貫性。常にホストとコンテナが完全に同じ表示(デフォルト)
cachedホストの表示が信頼できる。ホスト上の更新がコンテナ上に反映するまで、遅延が発生するのを許容
delegatedコンテナの表示が信頼できる。コンテナ上の更新がホスト上に反映するまで、遅延が発生するのを許容

設定方法

docker runの場合

docker run -v /Users/yallop/project:/project:cached alpine command

docker-compose.ymlの場合

volume: /Users/yallop/project:/project:delegated

まとめ

まとめるほどの内容ではありませんが、まぁMacのDockerがWindowsと違う処理方法で、Volumeとの整合性とパフォーマンスを天秤にかけてる感じ。で、パフォーマンスのチューニングをユーザーそれぞれでやってねってことですね。たぶん。Docker難しい。。。。

ではでは。

この記事を書いた人

keishiro

こんにちは、板川恵司朗です。