🐋

【仮想環境】venv系とDocker系の使い分け

2025/02/13に公開

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