ウェブサイト検索

私はほとんどすべてにDockerを使用していますが、私は開発者でもありません。


Dockerは開発者だけのものだと思いますか?そんなことを聞いたことがありますが、それはまったく間違っています。私は開発者ではありませんが、ホームラボで数十のサービスやアプリを実行するためにDockerを使用しています。

そもそもDockerとは何ですか?

Dockerは、コンピュータやサーバー上でサービス、プログラム、ミニオペレーティングシステムを実行するためのコンテナ化プラットフォームです。また、アプリケーションを構築するために必要なさまざまな開発環境、ツール、その他のものを実行するためにも使用できます。

Dockerを使用する主な理由の一つは、さまざまなサービスを互いにおよびホストオペレーティングシステムから隔離して実行できることです。これにより、システムのプライバシーと保護が向上します。もし一つのコンテナが侵害された場合、それは自身と自分がアクセスを許可しているものにのみアクセスできます。

つまり、私は開発者ですか?

自分を「開発者」とは必ずしも呼びません。以前はプログラミングやアプリケーション開発をしていましたが、数年間していません。Linux端末には詳しいですが、個人のウェブサイトに関してはHTMLやCSSをちょっと触る程度ですが、全くの開発者ではありません。

せいぜい、私はいじり好きです。物をいじるのが好きで、アプリのコードを変更して自分の思い通りに動かしたり、自宅のラボで運営しているさまざまなサービスをいじくり回したりしています。

私は開発タスクを行わないので、実際にDockerで開発サービスを実行していません。Dockerには素晴らしい開発者ツールがいくつかありますが、個人的にはそれらを使用する必要がありません。

もし私が開発者でないなら、なぜDockerを使うのか?

Dockerは開発作業を助けるために素晴らしい仕事をしますが、それは私の利用ケースではありません。代わりに、私はDockerのコンテナ化を全く異なる目的で利用しています:ホームラボです。

利用可能なDockerコンテナは数万種類あります。多くのコンテナは、開発ではなくサービスやプログラムを実行することに焦点を当てています。

私のホームラボでは、主要なDockerホストにほぼ30のDockerコンテナが展開されており、もう一つのDockerホストにはさらに6つのコンテナがあります。これらのサービスには、Pi-hole、Plex、OpenSpeedTest、Calibre、paperless-ngx、Home Assistant、Tautulli、Homepageなどが含まれています。

質問は、なぜアプリを直接インストールするのではなく、これにDockerを使用するのかということです。答えは簡単です:私はコンテナが大好きです。

Dockerを使うと、Plexコンテナはアクセスを許可しない限り、私のネットワーク上の何にもアクセスできません。だから、私はPlexにメディアライブラリへのアクセスを許可するだけです。それだけです。Home Assistantは実際には私のサーバーに全くアクセスできません; それは独自のIPを持ち、私のネットワーク上で動作していますが、もしそれが侵害されたとしても、私のネットワーク上の他のハードウェアにアクセスすることはできません。

他のすべてのアプリにも同じことが言えます。彼らはすべてお互いから隔離されています。Docker コンテナは、私が与えたものにしかアクセスできないため、ホームラボでのセキュリティリスクを細かく制御することができます。

さらに、Dockerコンテナは実行したいアプリに合わせて事前に設定されているため、サービスを立ち上げるためのセットアップはほとんど必要ありません。すべての依存関係はすでに揃っており、コンテナの開発者によって常に最新の状態に保たれています。依存関係のいずれかが再起動を必要とする場合、私が再起動しなければならないのはDockerコンテナだけで、ホストシステムを再起動する必要はありません。

Dockerはポータブルで、ホストシステムを簡単に変更でき、サービスを再インストールしたり再構成したりする必要はありません。最近、Dockerサーバーをあるコンピュータから別のコンピュータに移動しましたが、実際に設定を持ってこなかったコンテナはHome Assistantだけで、これはバックアップから簡単に復元しました。

私が初めてDockerを使い始めたとき、これがどれほど便利な機能であるかを実感していませんでした。しかし、私はこれを何度も使ってきました。移行機能も素晴らしいですが、私がDockerで最も好きな部分は、設定や構成を失うことなくコンテナを再インストールできることです。

では、なぜ私はDockerを使うのでしょうか?それは私のホームラボでサービスをインストール、テスト、使用するための最も簡単な方法だからです。Dockerコンテナの展開は数秒で完了します。作業が終わると、コンテナを削除するだけで、サービス(すべての依存関係)が消えます。

Dockerは私のホムラボ全体を運営しており、他の方法を想像することができません。

私のホームラボの旅のこの時点で、Dockerを使わないことは想像できません。Dockerで試したサービスの数を数えることすらできません。それは、私が望んでいたことをしなかったため、数分後に削除してしまったからです。

Dockerがなければ、ソフトウェアとその依存関係をすべてインストールする必要があります。アンインストールする際は、それらの依存関係を削除する必要があり、ほとんど常に残されたままの設定ファイルが存在します。

Dockerは私のホームラボの管理をシンプルにしてくれるし、間違いなくその仕事に最適なツールです。

将来的には、可用性の高い環境にDockerを展開する計画です。本質的には、すべてDockerを実行する同様の仕様のサーバーを三台持つことになります。その後、私が好むDocker管理ツールであるPortainerが、これらのサービスをさまざまなサーバーに分配します。

もし私が1つのサーバーで作業する必要があれば、すべてのサービスは別のサーバーに移行し、稼働し続けます。メンテナンスを受けたサーバーが再起動したとき、再びコンテナがそのサーバーにデプロイできるようになります。

アプリケーション管理システム、例えばDockerを使用しなければ、これは不可能です。Dockerがそのボリュームやストレージを扱う方法のため、サービスが移行する時、それに伴ってすべての設定、構成ファイル、アプリケーションが使用するローカルストレージも移行します。

Dockerは私のセットアップにとって絶対に必要であり、今後もどこかに行くことはないと思います。

だから、いいえ、私は開発者ではありませんが、Dockerが大好きです。もしあなたが開発者でないなら、Dockerを試してみるべきです—あなたの環境がずっと良くなるでしょう。


試してみる価値のあるDockerコンテナがたくさんあります。実際には何万もあります。それに圧倒されているなら、あなたは一人ではありません。ここでは、私が好きなDockerコンテナのいくつかを紹介します。これは、シンプルなウェブページから本格的なサービスまで、すべてのホームラボに必要だと思うものです。