SlideShare una empresa de Scribd logo
1 de 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
・速い
・軽い
・本番でも使える
・便利
結論

Más contenido relacionado

La actualidad más candente

画像ベース異常検知Amazon Lookout for Visionを使ってみよう
画像ベース異常検知Amazon Lookout for Visionを使ってみよう画像ベース異常検知Amazon Lookout for Visionを使ってみよう
画像ベース異常検知Amazon Lookout for Visionを使ってみようTakanoriTsutsui
 
GitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作るGitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作るNaonori Inao
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることShingo Fukui
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないCarnot Inc.
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpYahoo!デベロッパーネットワーク
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりShinichi Tomita
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていることonozaty
 
Cloud Foundryは何故動くのか
Cloud Foundryは何故動くのかCloud Foundryは何故動くのか
Cloud Foundryは何故動くのかKazuto Kusama
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...Yahoo!デベロッパーネットワーク
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―shinjiigarashi
 
ChatGPTの ビジネス活用とセキュリティ
ChatGPTのビジネス活用とセキュリティChatGPTのビジネス活用とセキュリティ
ChatGPTの ビジネス活用とセキュリティDaisuke Masubuchi
 

La actualidad más candente (20)

画像ベース異常検知Amazon Lookout for Visionを使ってみよう
画像ベース異常検知Amazon Lookout for Visionを使ってみよう画像ベース異常検知Amazon Lookout for Visionを使ってみよう
画像ベース異常検知Amazon Lookout for Visionを使ってみよう
 
GitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作るGitHubで雑誌・書籍を作る
GitHubで雑誌・書籍を作る
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Cloud Foundryは何故動くのか
Cloud Foundryは何故動くのかCloud Foundryは何故動くのか
Cloud Foundryは何故動くのか
 
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019  #hc...
HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hc...
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
AWS CognitoからAuth0への移行パターン4つ
AWS CognitoからAuth0への移行パターン4つAWS CognitoからAuth0への移行パターン4つ
AWS CognitoからAuth0への移行パターン4つ
 
ChatGPTの ビジネス活用とセキュリティ
ChatGPTのビジネス活用とセキュリティChatGPTのビジネス活用とセキュリティ
ChatGPTの ビジネス活用とセキュリティ
 
Hadoop ~Yahoo! JAPANの活用について~
Hadoop ~Yahoo! JAPANの活用について~Hadoop ~Yahoo! JAPANの活用について~
Hadoop ~Yahoo! JAPANの活用について~
 

Notas del editor

  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しかないため、イメージのダウンロードが速く、実行も速いです。