🐋
【仮想環境】venv系とDocker系の使い分け
venv系とDocker系の特徴と使い分けについてまとめます。
1. venv系統(Pythonのvenv、Rubyのrbenv/rvmなど)
特徴
- 依存関係の隔離
ライブラリやパッケージの依存関係を管理、また別環境で再現できる - 簡潔なセットアップ
コンテナに比べセットアップが簡単 - 環境汚染
グローバル環境の汚染によるライブラリ同士の干渉を防ぐ
まとめ
手軽にライブラリなどの依存関係を管理できる
2. Docker系統(Docker、Podmanなど)
特徴
- OS上の設定含めて環境を構築できる
ライブラリのみでなく、apt
などでOSにインストールするソフトウェア等含めて環境を管理できる。より複雑な依存関係をまとめて管理できる。 - 拡張性
コンテナを組み合わせてアーキテクチャを構築でき、Kubernetes等のツールによってスケールしやすい
まとめ
OS上のソフトや設定含め依存関係を管理できる。スケールしやすい。
3. VM(VMware、VirtualBoxなど)
目的
- OS単位で環境を分離
異なるOSの環境を構築することができる。
開発用途ではあまり使われていないように思います。
4. まとめ
大まかに、手元の開発におけるライブラリ単位の依存関係ならvenv系統、大規模システムやaptなどを使用したOSへのインストールを含む環境を構築するならDocker系統を利用するイメージです。
今回は以上です。読んで頂きありがとうございます。
Discussion