docker

MacでDockerお砂場を作る

投稿日:

docker on vagrant

Docker for Macが遅いので,Webのコード書くのはvagrant+ansibleで済ませていたのだけれども,
vagrant上にdockerを立てることでLinux上で走らせるのと同レベルの速度を得られるようなので,
docker on vagrantを立ててdockerに入門してみる。

Web開発していない人から見ると,なんでdocker使わないの? ってことなのだが,
気持ちは以下の通り. 工夫無しだと1度試したら2度とやりたくないレベルで使い物にならない.

Docker For Macが遅い:対策の実験
Macのdockerが遅いストレスから解放されよう

ansibleで自動化してたから手間に気づかなかったけど,
公式がイメージ配ってるんだから,手間なしなのはdocker.
本番環境と開発環境を揃えにくいかなとも思うけど,
AWS ECS的なものもあって,そもそもdockerだけで完結する世界が主流になりそうな感.

docker on vagrantで遅さを回避できるので,
言い訳してないでアップデートしていく..

なぜ遅いのか

Docker for Macは, AlpineLinuxベースのHyperkitVMの上で透過的にContainerを扱う.
Mac上でDockerコマンドを実行すると,透過的にHyperkitVM上に反映される.
Macの上で直接Containerが動いているのではなくこのVMの上でContainerを動かしている.

HostとGuestのファイルシステムをマウントする観点ではvagrantも同じで,
実際,VagrantfileでマウントオプションとしてNFSを指定したとしてもNativeよりかなり遅い.

ファイルシステムの対称性がある分,vagrantはHostとGuestをSyncする方法に手を入れやすく,
HostとGuestのファイルシステムをNativeと同等レベルの速度でSyncする手段を導入できる.
この仕組みによると, vagrantの上でDockerを動かすパフォーマンスがNative並に速くなる.

Mutagen

HostとGuestのファイルシステムをSyncするためにMutagenを利用する.
Overviewによると,Mutagenは双方向の同期ツールで,低レイテンシをうたっている.
もともとHostToGuestというよりはLocalToCloudの統合を目指している感じ.

キーボードを打ってから反映されるまでのラグが気になる,
とかOSが違う場合のアレコレ(permissionとかシンボリックリンックとか),とか,
そういうところの解消を目指している様子.
エージェントレス,TCP,でリモートへの導入コストが少ないのが良い.

VagrantにはMutagen over SSHの形を取る.

インストール手順

こちらが参考になりました。わかりやすく,手順通りやれば10分かかりません.
Vagrantを使う「Mac最速のDocker環境」を初心者向けに解説【遅いMac for Dockerを卒業】

とりあえず箱だけ作った.Laravelだと分かりづらいのでRailsで試したところ激しく速かった.
副次的な効果として、Macを汚さないのでお砂場にぴったり.

-docker
-,

Copyright© ikuty.com , 2024 AllRights Reserved Powered by AFFINGER4.