SlideShare a Scribd company logo
1 of 12
開発環境を
Vagrantからdockerに
移行してみた
雑兵MeetUp #6
Tsukasa Arima(@pyar6329)
Tsukasa Arima(@pyar6329)
・バックエンドエンジニア
・Ruby on Rails好き
・今年某会社に入社したばかり
・でもフロントエンドもやってるよ
アプリ開発しよう
よっしゃ、環境構築や!
アプリ開発する前に
つらい
特徴
・仮想マシン
・設定の自動化
・チーム間共有
vagrant
だめなとこ
・起動遅い
・プロビジョニング遅い
vagrant
docker
・コンテナ
・小さく閉じた環境
・windows, mac対応
dockerが速い理由
Guest OS
Hypervisor
Host OS/Kernel
Hardware
Apps Apps Apps
Host OS/Kernel
Hardware
container
Apps
container
Apps
container
Apps
dockerが速い理由
・ベースのイメージ
・機能追加毎に重ねていく
・同時にダウンロード
dockerが速い理由
・先にimageを作っておく
・imageをクラウドに保存
・実行時にダウンロード
速度比較
vagrant docker
起動速度 18分 3分
容量 500MB~1GB 10~200MB
・速い
・軽い
・本番でも使える
・便利
結論

More Related Content

What's hot

オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
chonaso
 

What's hot (20)

파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
devops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptxdevops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptx
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
NuGetの社内利用のススメ
NuGetの社内利用のススメNuGetの社内利用のススメ
NuGetの社内利用のススメ
 
普通の人でもわかる Paxos
普通の人でもわかる Paxos普通の人でもわかる Paxos
普通の人でもわかる Paxos
 
Paxos
PaxosPaxos
Paxos
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 

Recently uploaded

Recently uploaded (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Editor's Notes

  1. みなさん、webアプリ開発していたことありますか? 一般的には、Ruby on railsやexpressなど、フレームワークを用いて開発することが多いと思います。
  2. でも開発するときに色々なミドルウェアが必要になると思います。例えばRuby on railsの場合、フロントエンドではruby, postgresql、webサーバであるnginx、最近ではフロントエンドの部分にnodejsやgulpを用いてコンパイルしたりします。
  3. じゃあ仮想マシン使ってみようと考えます。最近だと開発環境にvagrantを使っている人が多いと思います。これはvagrantfileと呼ばれるものを用いて仮想マシンを作成し、環境を構築します。チーム間での共有がすぐにできるので便利です。
  4. でもvagrantを使っていても問題があります。それは色々遅いことです。例えば起動が遅く、OSのimageをダウンロードするのに時間がかかります。そして共通の設定を作るためにshellscriptやansibleを用いたりもしますが、これも時間がかかります。
  5. じゃあ最近聞くdockerはどうなんだろうと思って使ってみました。dockerはコンテナとよばれるものを用いて仮想環境を構築します。最近ではdocker for macやdocker for windowsと呼ばれるものが公開され、簡単に実行することができるようになりました。
  6. 内部構造を比較すると、ゲストOSが存在しません。dockerはvagrantと違ってrailsだったらrailsコンテナ、mysqlだったらmysqlコンテナと役割ごとに分離して実行します。その役割ごとにimage(vagrantでいうbox)を作成します。
  7. じゃあそのdockerのimageはどうなっているかというと、ベースとなるOSのイメージを元に作成していきます。例えばdebianのOSを元に、imageを追加していきます。imageを作成するごとにレイヤーがどんどんつらなっていき、実行時にはこのレイヤーが並列にダウンロードされていきます。
  8. イメージを作成するためには、Dockerfileと呼ばれるものを先に作成します。これを用いてビルドしたものをdocker imageのクラウドサービスにアップロードします。つまりvagrantのansibleやshellscriptがこの時点で実行されるため、そのぶん実行時にかかる時間が減ります。
  9. 実際に比較してみると、このようになっています。dockerは最も小さいもので20MBしかないため、イメージのダウンロードが速く、実行も速いです。