Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
脱VM!リモートコンテナによる開発
Search
HIRA
February 09, 2021
Technology
0
910
脱VM!リモートコンテナによる開発
2021.2.9 社内勉強会発表資料
2022.5.21 SlideShareから移行
HIRA
February 09, 2021
Tweet
Share
More Decks by HIRA
See All by HIRA
AWS CloudFormationによる Infrastructure as Codeの実現
hira
0
190
MQ(メッセージキュー)入門
hira
0
760
マイクロサービス化に向けて
hira
0
160
CI(継続的インテグレーション)
hira
0
90
Other Decks in Technology
See All in Technology
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
180
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
250
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
110
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
15k
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.5k
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4.5k
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.7k
ESXi のAIOps だ!2025冬
unnowataru
0
400
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
2k
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
730
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
5
2.2k
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
2.5k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.4k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
130
A Soul's Torment
seathinner
1
2k
The browser strikes back
jonoalderson
0
220
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
The SEO Collaboration Effect
kristinabergwall1
0
310
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
How Software Deployment tools have changed in the past 20 years
geshan
0
30k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
130
Transcript
脱VM!! リモートコンテナによる開発 (2021.2.9) KENJI HIRATA
現状課題 • 複数プロジェクトの開発保守のため個別の開発環境(VM)が 必要となる VMの容量が大きくHDD逼迫 VM起動により、CPU・メモリ等のリソース負荷がかかり、PCのス ペックが低いと重くて開発が困難
新規要員対しVMの提供が必要 (VPNではネットワーク的にきついためポータブルHDD等による受け渡し となる⇒出社が必要)
現状課題 • 複数プロジェクトの開発保守のため個別の開発環境(VM)が 必要となる VMの容量が大きくHDD逼迫 VM起動により、CPU・メモリ等のリソース負荷がかかり、PCのス ペックが低いと重くて開発が困難
新規要員対しVMの提供が必要 (VPNではネットワーク的にきついためポータブルHDDによる受け渡しと なる⇒出社が必要) ホスト環境を汚さず、かつVMを利用しないで開発ができないか??
解決策 • 開発環境を仮想コンテナ化 • VSCodeのRemote Containers機能でコンテナに接続して開発
仮想コンテナとは? ホストOS カーネル コンテナ コンテナ VM(仮想マシン) ゲストOS ゲストOS コンテナエンジンというプロセスを通して、ホストOSの「カーネル」を共有することでCPUやメモリなどのリソースを隔 離し、仮想的な空間を作り出す。これをコンテナ型仮想化という。
VMWare等のハイパーバイザ型仮想化に比べ、軽量かつ起動が早いというメリットがある。 カーネル カーネル ハイパーバイザー コンテナエンジン アプリ アプリ アプリ アプリ ミドル ウェア ミドル ウェア ミドル ウェア ミドル ウェア
代表的なコンテナエンジン「docker」 コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム 今回は、dockerを利用した開発の方法を紹介します。
コンテナ化するメリット • インフラ環境(実行に必要なミドルウェア、ライブラリ、他設定等)をコード化できる • コード化することでインフラをバージョン管理可能 • VMのように仮想マシンの配布ではなく、数キロバイトの定義ファイルのみの配布で済む。 • 簡単に作り直せるため、変更も容易。
WindowsでDockerを利用するためには • Hyper-Vを利用する • WSL2(Windows Subsystem Linux)を利用する どちらかの方法でDockerを起動させることができるが、Hyper-Vを利用する場合、VMWareが利用 できなくなる。 コンテナとVMの両立を実現するには、WSL2を利用する方法となる。
※WSL2の利用については下記ページを参照 Windowsローカル開発環境のコンテナとVMの共存運用に向けて https://qiita.com/kj_hira/items/be2631f26e6afbc5b0df
dockerを利用した開発フローの例 dockerコンテナ jar Javaランタイム dockerコンテナ jar Javaランタイム dockerコンテナ jar Javaランタイム
検証環境 本番環境 開発環境 コンテナリポジトリ ローカルPC コンテナ起動 アプリデプロイ PUSH PULL PULL 開発から本番まで同一の実行環境であることで、環境による動作不備の心配が不要。 ローカルでは動いたけどサーバ(他環境)では動かないといったことが無くなる。
dockerを利用した開発フローの例 dockerコンテナ jar Javaランタイム dockerコンテナ jar Javaランタイム dockerコンテナ jar Javaランタイム
検証環境 本番環境 開発環境 コンテナリポジトリ ローカルPC コンテナ起動 アプリデプロイ PUSH PULL PULL 開発から本番まで同一の実行環境であることで、環境による動作不備の心配が不要。 ローカルでは動いたけどサーバでは動かないといったことが無くなる。 しかし、開発メンバーにコンテナの知識が必要。 全員に習得してもらうのは無理がある・・・
コンテナを使った開発の難しさを解消 VSCodeのRemoteContainers機能を利用することで、コンテナを意識せずにコンテナによる開発が可能 引用:Visual Studio Code (Developing inside a Container)
開発者の操作手順の例 1. VSCodeを立ち上げる 2. Gitリポジトリから最新をPULL(またはclone) ※Dockerfileまたはdocker-composeファイルを取得 3. VSCodeのRemoteContainersを起動 ※ここで自動的にコンテナの生成と起動が行われる 4.
ソースコードを修正し、VSCodeのデバッグを実行 コンテナを意識することなく従来通りの開発が可能