初めに
Linuxについて書籍で学習中磁器。
はじめて知る事となった「Virtual Box」と「ContOS Stream9」。なんだこれ?
仮想マシンっていうと「Docker」が一番最初に思い浮かぶけど、一体何が違うのだ?
これらについて調べた内容、主に個人的に「このサイトが参考になった」、をまとめ、自分の中でも整理しておきたいと思います。
👇違いについて調べる前に知りたかった事は以下になります。
- 書籍の学習用で CentOS を入れているが、普段使う予定はなさそう
- とりあえず書籍に沿って、VirtualBox を使い、CentOS Stream 9 の仮想マシンを作成中
- すでにパソコンには Ubuntu + Git + Docker が入っている
- → 仮想マシン新規作成の際にメモリやサイズの設定ができるが「メモリやディスクサイズを小さくしても大丈夫?」かを把握したかった(最終的にはデフォルト設定から小さい値に変更して作成しました)
インストールとかの方法
インストール方法は以下サイトが図つきでわかりやすかったので、本記事では割愛します。
知りたかった事(改めても含めて)
1. 仮想マシン」って何?
「実際のパソコンの中に、もう1台パソコンを作る」仕組み
OSもアプリも独立して動く。
例:VirtualBox で CentOS を入れると、本物のLinuxマシンを作ったのと同じになる
2. VirtualBoxの代わりがDocker?Dockerは仮想マシンの一種?
| 比較項目 | 仮想マシン(VM) | Docker |
|---|---|---|
| OS丸ごと動かす? | ✅ できる(重い) | ❌ 必要最小限のLinux(軽い) |
| GUIが使える? | ✅ 可能(CentOSの画面あり) | ❌ 基本はコマンドラインのみ |
| 起動時間 | 数十秒〜数分 | 数秒 |
| リソース(CPU/メモリ) | 多く使う | 少なくて済む |
| 実行単位 | OSごと動く | アプリ単位で動く |
| 例 | VirtualBox, VMware | Docker, Podman |
- VirtualBoxはゲストOSごとに仮想環境を構築する
- DockerはホストOSのカーネルを共有するため、より軽量かつ高速な環境を利用できる
- Dockerは仮想マシンではないけど、「小さい仮想マシンっぽく使える」もの?なのかな?
3. Dockerで代用できるモノ、できないモノ
【代用できる】
- LinuxコマンドやGitの練習
- Webアプリ・APIの開発
- サーバー構築の練習(Apache, MySQL など)
【代用できない】 - 本物の「デスクトップOS」を起動したい(CentOSの画面など)
- GUIアプリを試したい
4. CentOS Stream の代わりが Ubuntu?
| 比較項目 | CentOS Stream 9 | Ubuntu |
|---|---|---|
| タイプ | RHEL(Red Hat系) | Debian系 |
| パッケージ管理 |
dnf, yum
|
apt |
| 学習目的 | サーバー向け / 商用向け | サーバー/デスクトップどちらも |
| 初心者向け | 少し難しい | やさしい・情報が多い |
RedHat系やDebian系とは
| 比較項目 | Red Hat系(例:CentOS, Rocky) | Debian系(例:Ubuntu, Debian) |
|---|---|---|
| 作った人/企業 | Red Hat社(IBM) | ボランティア/Canonical社(Ubuntu) |
| パッケージ管理 |
yum, dnf
|
apt |
| ファイル形式 | .rpm |
.deb |
| 安定性 | 高い(長期運用) | 高いが最新技術も取り込みやすい |
| 学びやすさ | やや上級者向け | 初心者向け |
| 使用場面 | 企業・サーバー用 | 家庭・教育・開発など |
図にすると以下のような感じになります
Linux
├── Red Hat系(企業系)
│ ├── Red Hat Enterprise Linux(RHEL)★本家
│ ├── CentOS(無料版RHEL)※今は「Stream」
│ ├── Rocky Linux(CentOSの後継)
│ └── Fedora(新技術テスト用)
│
└── Debian系(ボランティア系)
├── Debian ★本家
└── Ubuntu(使いやすく改良)
├── Linux Mint(さらに初心者向け)
└── Pop!_OS など
5. 開発環境と本番環境の違い
| 環境 | 目的 | どこで動く? |
|---|---|---|
| 開発環境 | ローカルPCで作って試す | 自分のPC (VirtualBox, Docker) |
| 本番環境 | インターネットでサービス提供 | クラウド(Render, AWS など) |
→ Docker で開発し、Renderなどにコンテナをデプロイして本番公開、という流れ。
6. Linuxとは?
| 用語 | 説明 |
|---|---|
| Linux(狭義) | Linuxカーネル(OSの心臓部分) |
| Linux(広義) | Linuxディストリビューション(例:Ubuntu、CentOS) |
7. コマンド・シェル・ターミナルの違い
| 用語 | 説明 | 例 |
|---|---|---|
| コマンド | コンピュータへの命令 |
ls, cd, git
|
| シェル | コマンドを受け取るプログラム |
bash, zsh, sh
|
| ターミナル | シェルを操作する「画面」 | macOSのTerminal、WindowsのPowerShell、Git Bash |
→「ターミナル」で「シェル」を通して「コマンド」を実行する、という流れ!
終わりに
エディタやコマンド入力時にしようするもの等、こんなにもいろんな種類がある事を知らなかった。。
会社であればプロジェクトごとやその会社ごとで推奨されているモノを使用すればいい話ですが、個人となるとすき好みはもちろんお金の問題も。
ぱっと、最適なものを選べるようなレベルまで到達したいとおもう今日この頃。