Docker について人々が話しているのを聞いたことはありますが、それが何なのか、また必要かどうかはわかりませんか? Docker は、どのホームラボにもある素晴らしいツールだと思います。ここでは Docker とは何か、そして Docker が私のホームラボの管理を容易にする唯一のツールである理由を説明します。
ドッカーとは何ですか?
いいえ、コンテナの名前ではありません
Docker は、コンテナーが実行されるプラットフォームの名前です。これはコマンドライン ツールとデスクトップ インターフェイスの両方であり、どちらを使用するかに応じて異なります。
Docker は、ホームラボ環境と運用環境の両方でコンテナ化されたアプリを実行するための業界標準になっています。 10,000,000 (1,000 万) を超えるパブリック イメージのリポジトリである Docker Hub も、Docker (またはその他のコンテナ マネージャー) 内で実行するアプリケーションを入手するための頼りになる場所の 1 つです。
Docker は最もよく知られたコンテナ マネージャーの 1 つであり、使用するための最も適切な文書が記載されているオプションの 1 つでもあります。コンテナーを使い始めたばかりの場合は、入り口として Docker を使用することを強くお勧めします。Docker の方が簡単で、コミュニティには豊富なサポートが用意されています。
コンテナとは何ですか? Docker 専用のものですか?
Docker は人気がありますが、街で唯一のプレイヤーではありません
Docker は、現在他の多くのプラットフォームで使用されている Open Container Initiative (OCI) の作成に貢献しました。 Docker 自体は完全に無料かつオープン ソースではないかもしれませんが、Docker の開始に貢献した OCI は無料です。
Docker を使用したくない人のために、Podman、Containerd + Nerdctl、Rancher Desktop、さらには LXC など、他の OCI 準拠プラットフォームが存在することは間違いありません。
これらのプログラムの一部は Docker サブシステム上で実行され、その他のプログラムは独自のコンテナー実装を使用します。ただし、結局のところ、それらはすべてコンテナーを実行します。
コンテナとは何かを説明する最も簡単な方法は、コンテナをアプリケーションとして参照することです。各コンテナー イメージは、通常 1 つまたは 2 つのことを実行するように設計されており、それだけです。より多くの機能を実行する独自のイメージを構築することもできますが、一般的には単一目的のコンテナーを使用することをお勧めします。
実行する各コンテナーには、コンピューター上の Docker ボリュームまたはフォルダーに保存される永続ストレージと、コンテナーが更新されるたびに破棄されるストレージの両方が含まれます。これにより、設定が見つけやすいファイルに保存され、誤ってコンテナをアンインストールした場合でも、再インストールしてすべての設定を元の状態に保つことができるため、多くのシナリオで専用アプリケーションよりもコンテナが使いやすくなります。
コンテナと仮想マシンの違い
事前構成済みで超軽量
これまでコンテナについて聞いたことも使用したこともない場合、それを説明する最良の方法の 1 つは軽量仮想マシンですが、実際にはコンテナです。 ない 仮想マシン。
コンテナーは、コンピューター上で実行されるコンテナー化された小型オペレーティング システムであり、その目的で構築された特定のアプリケーションを実行するように事前構成されています。これは、Arch Linux イメージに基づく Plex 用のコンテナを入手できることを意味しますが、それには Plex を実行するために必要な Arch のコンポーネントのみが含まれており、それ以上は含まれていません。
コンテナはホスト オペレーティング システムと簡単に対話できますが、仮想マシンではそれがより困難になることがよくあります。コンテナーを使用すると、読み取りまたは読み取り/書き込みを行うために、ホスト コンピューターからフォルダーやファイルをマウントすることがよくあります。多くの場合、コンテナーでは、内部の /data フォルダーや /config フォルダーなどをコンピューター上のフォルダーにマウントする必要があります。そうすることで、これらのファイルに完全にアクセスできるようになり、実際にコンテナーが非常に堅牢になるのはこのためです。
つい先日、私は Docker サーバーに対して何かを行って、いくつかのコンテナをダウンさせました。私がしなければならなかったのは、それらを新たに起動し、マウントされたフォルダーがストレージ上のフォルダーを指すようにすることだけでした。そして、サービスは決して停止していないかのようにバックアップされ、実行されていました。
一番最初のコンテナを実行する
思ったより簡単です
Docker コンテナの実行は実際には非常に簡単です。 Docker コンテナを実行するには、主に 2 つの方法があります。 docker run コマンド、または Docker Compose を通じて。
私はこれまで Docker Compose の大きなユーザーではありませんでしたが、ますます使用するようになりました。簡単にするために、使用方法を説明します docker run そして Docker Compose を使用すると、両方の例を簡単に確認できます。
まず、コンピューターに Docker をインストールします。これは実行しているオペレーティング システムによって異なりますが、インストールしたら、最初のコンテナーをデプロイする準備が整います。
Docker がインストールされたら、ターミナルに移動して実行します。 sudo docker run hello-world。これにより、Docker からのメッセージとその生成に必要な手順を示す出力が得られます。
Docker Compose 側では、次のコードを使用して非常に単純な docker-compose.yml ファイルを作成し、実行します。 docker compose up:
services:
hello:
image: hello-world
上のスクリーンショットと同様の出力が表示されていれば、Docker の旅の次のステップに進む準備は完了です。
Docker Compose はワークフローを簡素化できます
ファイルをコピーし、いくつかの行を変更し、サービスを開始します
両方の使い方を紹介しました docker run と Docker Compose がありますが、実際には、可能であれば Docker Compose を使用する必要があります。これは、特に複雑な展開の場合、より簡単な方法です。
Docker Compose を使用すると、時間をかけて、起動したい Docker コンテナー用の 1 つのファイルを構築できます。 Compose ファイルの変更も非常に簡単です。 docker run コマンドを使用して、デプロイ設定 (環境変数、ポート、バインド マウントなど) を変更する必要がある場合は、コンテナーを停止し、docker run コマンドを書き直して、再デプロイする必要があります。
Docker Compose を使用すると、コンテナーを実行するフォルダー内に docker-compose.yml ファイルが存在します。ファイル自体はいつでも簡単に変更できます。コンテナを起動するには、次のいずれかを実行します docker compose up 一度実行してシャットダウンするか、 docker compose up -d コンテナをバックグラウンドで実行したい場合。 Compose ファイルに変更を加えると、 docker compose up -d 再度実行すると、それらの変更が有効になります。
Porttainer のような Docker の Web UI を使用している場合を除き (私も使用しています)、Docker Compose は単純に Docker とのインターフェースをとる最も簡単な方法です。元のコマンドがどのようなものか覚えておかなくても、コンテナの設定を簡単に変更して再デプロイできます。
Docker は非常に価値のあるツールです。実際、Docker は私のホームラボ全体を実行しています。 Docker がなければ、私が行っているサービスを実行することはできません。
これまで Docker を使用したことがない場合は、ぜひ試してみてください。ホームラボ (または運用) 環境でサービスを展開および維持する方法に革命をもたらします。