🐳
🐳Docker基礎
🐳Dockerとは?
Dockerとは、コンテナ技術を使ってアプリケーションを実行・配布・管理するためのツールです。
Linuxカーネルの機能を直接使ってコンテナを実現しています。
イメージ(アプリの設計図)とコンテナ(実行中の実体)を区別します。
仮想マシンと違って軽量・高速に起動・削除ができます。
コンテナとは?
コンテナは、「ホストOSのカーネルを共有しながら、隔離された環境で動くプロセス」のことです。
ホストのカーネルは使いますが、ファイルシステム・プロセス空間・ネットワークなどは仮想的に独立しています。
カーネルとは?
カーネルとは、OSの中核部分でハードウェアとソフトウェアの間を取り持つプログラムです。
CPU、メモリ、ストレージ、ネットワークなどのリソース管理を担当しています。
🐳Docker vs 🦭Podmanの実用的な違い
- Dockerは1つの常駐プロセス(dockerd)で全てのコンテナを管理
- 管理が集中するが、セキュリティ的にやや懸念あり
- Podmanはデーモンレスで、コンテナはユーザープロセスとして動く
- セキュア(特にrootless対応)
- systemdと統合しやすい
項目 | Docker | Podman |
---|---|---|
デーモン | 必要(dockerd ) |
不要 |
root権限 | 必要な場合あり | rootless(非root) |
コマンド互換性 |
docker コマンド |
docker と互換あり |
セキュリティ | 一般的 | より高い(rootless対応) |
OCI準拠 | 対応 | 対応(Red Hat推奨) |
Macで動く理由
Macで使える理由はDocker Desktopが内部にLinux仮想マシンを持っているためです。
MacにはLinuxカーネルが存在しないため、内部でLinux仮想マシンを立ち上げています。
以下のような構成で動作しています。
[Mac]
↓
[軽量なLinux仮想マシン]
↓
[Linuxカーネル + Dockerエンジン]
↓
[コンテナ]
Discussion