デュアルブートではなく、DockerコンテナでLinuxを維持する4つの理由
WindowsやmacOSと一緒にLinuxを使いたいほとんどの人は、古典的な解決策であるデュアルブートを選びます。パーティションを切り分けてLinuxをインストールし、使用する際には再起動します。しかし、私はより良い方法を見つけました:私はDockerコンテナ内にLinuxを保持しています。ブートメニューをいじったり、ドライブのサイズを変更する必要はありません。
1. Dockerとは何か、そしてなぜDockerコンテナ内でLinuxを実行するのか?
Dockerは、アプリケーションとその依存関係をコンテナにパッケージ化するプラットフォームです。コンテナは、アプリケーションを実行するために必要なすべて(コード、ランタイム、システムツール、設定など)を含むスタンドアロンの実行可能パッケージです。要するに、アプリケーションが必要とするものはすべてコンテナの中にまとめられています。Dockerがシステムにインストールされると、すぐにコンテナを実行できます。
では、これの利点は何でしょうか?あなたのアプリケーションを別のコンピュータ、例えば友達のコンピュータで動かすことを想像してみてください。もう「でも、私のマシンでは完璧に動いていたのに!」という通常の問題に悩まされる必要はありません。Dockerを使えば、コンテナはどこでも一貫して動作します。
なぜDockerを使ってLinuxを実行するのか?
もし誰かが現在のオペレーティングシステムがWindowsまたはmacOSである間にLinuxを実行したい場合、一般的なアプローチはデュアルブートです。つまり、ディスクをパーティション分割し、その上にLinuxをインストールし、コンピュータをシャットダウンし、ブートメニューからLinuxを選択することを意味します。そうして初めてLinuxが起動します。
このLinuxを実行する方法は単に面倒なだけではなく、ブートローダーの問題、パーティショニングエラー、または問題が発生した場合のデータ損失など、いくつかのリスクも伴います。LinuxとWindowsをデュアルブートする前に考慮すべきことがいくつかあります。
考慮すべきもう一つの要因はワークフローです。重要な作業の最中で、コンピュータを再起動したくない場合はどうしますか?また、Linuxを使用しているときに、macOSでしか利用できないアプリが急に必要になったらどうしますか?どうしますか?
ここでDockerが役立ちます。Dockerを使えば、デュアルブートの手間を省くことができます。Dockerアプリを開いて、コンテナを起動するだけで、既存のOSと並行してLinuxが動作します。WindowsでもmacOSでも関係ありません。
それがDockerがもたらす美しさとシンプルさです。もしまだDockerがLinuxにとって素晴らしいものであると納得していないのなら、もっとお話ししましょう。
2. 私は心ゆくまでLinuxを使うことができます
結局、Linuxの何が特別なのでしょうか?私を含む人々は、そのオープンソースの特性、カスタマイズ性、そしてコミュニティなど、多くの理由からそれを愛しています。
Linux では、自分が欲しいツールを正確に選び、システムの動作を最小の詳細にまで調整し、ほとんど何でも自動化できます。Docker はこれをさらに良くします。
Dockerを使うことで、私は好きなディストリビューションを立ち上げることができます。Ubuntu、Fedora、Arch、Alpineなど、再インストールや再起動することなく、これらの間を切り替えることができます。また、メインのOSが安全で常に使用可能な状態である間に、物事を壊したり、自由に実験することもできます。そして、もし何かがうまくいかなかった場合、Linuxで何かを壊してしまった場合には、数分でリフレッシュを開始できます。コンテナを削除するだけで、数秒後には新しいコンテナが立ち上がり、稼働を始めます。
先月、私はグラフィカルデスクトップを動かしながら、どこまでシステムを軽量化できるか確かめるためにArchコンテナを立ち上げました。でも、うまくいきませんでした。そこで、ターミナルに「docker rm arch-lightweight」と入力しました。すると、数秒でコンテナは存在しなくなりました。クリーンアップも不要で、無駄なスペースもなく、そして最も重要なのは、無駄な時間もかかりませんでした。これはデュアルブートの設定では絶対に挑戦できないような遊び心のある実験です。Linuxを再インストールするのに一時間以上かかるからです。
これに加えて、SafariブラウザでAmazonウェブサイトを見ながら、同時に3つまたは4つのディストリビューションを実行することができます。
3. 私のラップトップでLinuxにリモートアクセスできます
これが私がDockerでLinuxを動かすことの好きな理由の一つです。メインのPCで実行していますが、自宅のどこからでもラップトップを使ってアクセスできます。Dockerコンテナはネットワーク越しにサービスを公開できるため、ソファ、キッチン、あるいはバルコニーでコーヒーを飲みながらでも、Linux環境にSSHで接続することができます。
それは、私のメインPCの中にある個人用クラウドサーバーを持っているようなものです。コードのコンパイルやデータの処理などの重い作業は全て私のメインマシンで行われますが、軽量のラップトップから完全に制御することができます。また、X11フォワードやVNCやRDPのようなリモートデスクトップの設定を使えば、ラップトップで完全なグラフィカルなLinuxデスクトップにアクセスすることができます。
4. ワークフローの分離は私にとって重要です
正直に言うと、私は簡単に気が散ってしまうタイプの人間です。自分のことをよく理解しているので、Dockerは異なる作業フローのために隔離されたLinux環境を作成することで、問題の一部を解決する手助けをしてくれました。
一つの散らかった過負荷のLinuxインストールの代わりに、特定の目的のために別々のコンテナを持っています。例えば:
- 開発: 私の好みのIDE、コンパイラ、データベース、デバッグツールを備えたコンテナ。
- 執筆:テキストエディタ、ブラウザ、および私の執筆ツールを備えたシンプルなLinuxデスクトップ。
- テスト:これは私が実験的なパッケージをインストールし、物事を壊し、心配せずにリセットする「廃棄用」のコンテナです。
このワークフローの分離は、私の環境を清潔に保ち、孤立感を作り出します。執筆用のコンテナを開くと、私は執筆モードに入ります。開発用のコンテナを開くと、私はコーディングモードに入ります。Dockerは単にLinuxを提供するだけでなく、私が軌道を外れないために必要な精神的な境界を与えてくれます。
この種のセットアップを再現するための中心的なアイデアは、各ワークフローに対して小さなセットのdocker-compose.ymlファイルを用意することです。各ファイルは次のことを定義しています:
- 私が欲しい基本のLinuxイメージ
- 事前にインストールされたパッケージやアプリ
- 共有ファイルのボリューム(ホストから自分の作業にアクセスできるように)
- 私が運営する可能性のあるローカルサーバー用のポート
それでは、私の環境を始めるのは簡単です:
cd ~/docker-envs/writing
docker compose up -d
## Or, for development:
cd ~/docker-envs/dev
docker compose up -d
数秒のうちに、毎回同じでクリーンな事前設定されたLinuxワークスペースの中にいます。作業が終わったら、停止して次回はまさにその続きから始めることができます。混乱も、作業フロー間の交差汚染もありません。
5. Linuxの設定はとても簡単です
最後に、純粋な生産性を考慮すると、DockerでLinuxを運用することには、使い勝手と管理のしやすさを大いに向上させる、言葉にされていないいくつかの特典があります。
- ディスクパーティショニングなし:手動でパーティションを作成したり、パーティション形式に悩んだり、重要なデータを消去してしまうリスクを負ったりする必要がありません。すべてはコンテナとイメージの中にきちんと収まっています。
- ブートローダーの安全性:GRUBメニューなし、ブートローダーの上書きなし、「なぜ私のコンピュータは起動しないのか?」という瞬間なし。私のホストOSは毎回正常に起動し、フルLinux環境がコンテナ一つの距離にあります。
- ホストの隔離:私は特定のタスクのために隔離された環境を作成するためにコンテナを使用できます。たとえば、自分自身のブラウザとファイルを持つコンテナを立ち上げることができます。そのブラウザ、アプリ、ファイルはホストとは隔離されており、セッションが終了すると破棄されるため、クッキーやローカルデータを通じて持続的な追跡を防ぎます。しかし、この設定はネットワークプライバシーを提供しないことを覚えておくことが重要です。それには、トラフィックをマスクするためにVPNまたはTorが必要です。
- スナップショットと復元:大きな変更を加える前に、コンテナの状態をスナップショットできます。何かが壊れたら、ただ元に戻すだけです。再インストールも必要なく、苦痛もありません。
これらの小さな便利な点は劇的に聞こえないかもしれませんが、合わせると大きな意味を持ちます。私は物事を設定したり問題を修正したりする時間が少なくなり、Linuxを使う時間が増えました。
デュアルブートはまだその役割を持っています。完全なハードウェアアクセスが必要な場合や、Linuxを主要なOSとして使いたい場合には、非常に良い選択です。私のPCにもWindowsと並行してLinuxをインストールしていますが、今ではほとんどLinuxに直接起動することはありません。その代わりに、Dockerコンテナ内でLinuxを実行しています。
最も重要なことは、DockerがLinuxを私が毎日、どこでも使うものにしてくれることであり、単に時々起動するものではないということです。そして、一度そのレベルのアクセスのしやすさを体験してしまうと、パーティションや再起動メニューをいじることに戻るのは難しいです。
ですので、現在のセットアップをいじるのが不安でLinuxを試すのをためらっている、またはデュアルブートの不便さに疲れているなら、DockerでのLinuxを試してみる時かもしれません。


