Docker とは#
Docker は、世界中の開発者が作成したプリセットの料理が集まる食堂のようなものです。実行したいプログラムに応じて、適切なプリセットの料理を選ぶだけで簡単に実行できます。
これらのプリセットの料理には、ソフトウェアライブラリ、ツール、設定など、プログラムの実行に必要なすべてが含まれており、完全な実行環境のようなものです。Docker は、電子レンジのようなもので、プリセットの料理を入れて加熱を開始するだけで、簡単にプログラムを実行できます。
オープンソースのソフトウェアや他の複雑なプログラムでも、Docker を使用することで煩雑な設定や環境構築の心配をせずに、ワンクリックで起動できます。
Docker のインストール#
Docker にはデスクトップクライアントがあり、比較的簡単にインストールできます。Windows システムでは Hyper-V を有効にする必要があります。次に進んで完了まで進めてください。クライアントを開いてエラーが表示されなければ、インストールが成功しています。
インストールプロセスで奇妙な問題が発生した場合は、使用している Windows が海賊版であるか、システムが改変されている可能性があるかを考慮する必要があります。
Docker の利用#
Docker は巨大なソフトウェアリポジトリのようなもので、さまざまなプリセットされたソフトウェアパッケージが格納されています。これは、WeChat の小プログラムのように、ダウンロードして実行するだけで使用できます。
私自身、Docker を使用しているアプリケーションは 3 つあります。Memos、Lobehub、Planka です。
Lobehub は、私が使用した中で最も優れた AI 統合ツールの一つです。Vercel デプロイをサポートしています。ローカルに Ollma をインストールして、Docker 版の Lobe-Chat をインストールするのは自然なことです。
Memos は軽量なノートサービスであり、Flomo のように素晴らしいアイデアを簡単にキャプチャして共有できます。オフラインの友達リストとして使用できます。
いくつかの散文的なテキストは Memos に記録し、記事にまとめることができるようになったら、Obsidian に変換します。
この Trello のオープンソース版のボードツールPlankaは、個人やチームのプロジェクト管理ニーズを満たすことを目指しています。ボード、リスト、カードなど、Trello に似た機能を備えていますが、自己ホスト型ですので、データとプライバシーを完全に制御できます。
Docker の小技#
私は Docker デスクトップクライアントを使いこなす必要はありません。通常、コンテナが起動しているかどうかを確認するだけです。
ほとんどの操作はコマンドを使用しますが、実際の作業では 5 つ以上のコマンドを使用しません。
削除、プルなどの操作にはクライアントを使用してみましたが、使えるけど使いにくく、さまざまな小さな問題が発生しやすいです。
私は個人的に最適な方法を考えました:いくつかの一般的なコマンドとクライアントの視覚化を組み合わせることです。
Docker プロジェクトのプルと起動
lobehub を例にとってみましょう。開発者の GitHub プロジェクトで Docker のインストールリンクを見つけます。
最初のコマンド、イメージのプル👇
Docker pull lobehub/lobe-chat
CMD を開き、リンクアドレスをコピーして貼り付け、Enter キーを押します。
プロジェクトがインストールされたら、起動する必要があります。つまり、「イメージのダウンロード→コンテナの起動」です。車は起動しないと動かないのと同じです。道路に出したくない場合は。
2 番目のコマンド、コンテナの起動👇
Docker run -d -p 3210:3210 lobehub/lobe-chat
Docker の利点は、幸運な値を向上させることです。一般の人にとって、Docker はさまざまなシステム環境と構成の難しさを軽減してくれます。
通常、2 つのコマンドでプロジェクトのプルと起動が完了します。
この時点で Docker デスクトップクライアントを開き、コンテナが正常に起動しているかどうかを確認し、リンクをクリックして使用できることを確認します🎉
Memos をオフラインで使用してフラッシュアイデアを記録し、LobeHut + Ollama でテキスト生成と翻訳を行い、Planka で計画を整理します。
ローカルポートをパブリックネットワークにマッピングし、ローカルネットワークトンネリング技術を使用することで、どこからでも(自宅、携帯電話、他のコンピュータ)Docker プロジェクトにアクセスできます。
オフィス外から Docker プロジェクトにアクセスする場合は、ローカルネットワークトンネリングを使用する必要があり、オフィスのコンピュータは常にオンにする必要があります。
私はローカルで Docker を使用することに慣れていますが、外部からアクセスする必要がある場合は、Vercel や他の無料のクラウドデプロイメントソリューションを使用します。
Docker プロジェクトの更新とアンインストール
Docker の主な利点は、無料、オフライン、セキュリティです。ただし、プロジェクトの更新やデータの移行などの問題もあります。
たとえば、プロジェクトの上流に更新がある場合、Docker はどのように同期しますか?コンピュータを交換する必要がある場合、ローカルにプロジェクトデータがある場合、別のコンピュータに移行する方法はありますか?プロジェクトをきれいにアンインストールする方法はありますか?
プロジェクトの上流に更新がある場合、通常、プロジェクトアプリ内で通知されます。まず、コンテナを停止して削除し、次にイメージをローカルにプルして上流の更新を取得し、再デプロイしてコンテナを起動します。
コンテナを停止して削除するには、Docker クライアントで操作することもできますし、コマンドを使用することもできます。コマンドを使用する場合は、コンテナの名前を知る必要があります。
クライアントを使用してコンテナを停止および削除する場合は、シンプルで直感的で、アイコンを見ればわかります。
コマンドラインを使用してコンテナを停止および削除する場合は、まず使用可能なコンテナを確認し、コンテナの名前を確認してから停止および削除します。
Docker ps -a
コンテナを停止および削除するコマンドは、memos を例に示します。
Docker stop memos & Docker rm memos
クライアントとコマンドの両方を使用できます。どちらか一方を選択してください。
同様に、プロジェクトイメージの更新方法は、デスクトップクライアントのボタンを使用するか、コマンドを使用するかのどちらかです。
コマンドを使用する場合は、先ほどのプルコマンドです。
クライアントを使用する場合は、そのイメージファイルの Pull をクリックします。
新しいバージョンをダウンロードした後、古いバージョンのイメージを削除できます(Docker イメージの Pull は新しいイメージを生成し、元のイメージを上書きしません)。
これで、コンテナを再起動する必要があります。ただし、この操作ではクライアントを使用しないでください。コンテナを起動するためにコマンドを使用してください。先ほどの 2 番目のコンテナ起動コマンドなど。
これにより、プロジェクトが最新バージョンに更新され、上流と同期されます。通常、古いレコードは残りますが、更新前にデータのバックアップをお勧めします。たとえば、memos にはノートのエクスポート機能があります。
Docker コンテナの Docker 起動時の自動起動
すべて順調なら、もう楽しんでいることでしょう。
仕事を終えてシャットダウンし、翌日に起動すると、一部のプログラムが実行できないことに気付くかもしれません。それは、コンテナが Docker と一緒に起動していないためです。
この場合、手動で Docker クライアントを開き、コンテナを選択し、起動ボタンをクリックします。しかし、毎回手動で起動するのは面倒です。コンテナが Docker と一緒に起動するようにしたいです。
2 つのコマンドで簡単に解決できます。
まず、コンテナが起動時に自動的に起動するかどうかを確認する必要があります。自動的に起動する場合は「Always」、そうでない場合は「no」となります。memos を例に示します👇
Docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" memos
「no」であれば、次のコマンドを実行して自動起動を設定します。
Docker update --restart always memos
次に、前のコマンドを実行して設定が成功したかどうかを確認します。「Always」が表示されれば、設定が成功しています。
Docker コマンドの拡張#
Docker の使用が深まるにつれて、人々はますます多くのコマンドや操作に戸惑うことがあります。これらのコマンドと操作を効果的に整理できないと、Docker の知識が断片化し、マスターするのが難しくなります。
私の個人的な対処方法は、コマンドをカテゴリごとに整理して保存することです。そうですね、Docker で構築した Planka が役立ちます。
Docker でプロジェクトを構築する場合、頻繁に使用するアプリケーションです。
さらに、不要なイメージやコンテナを定期的にクリーンアップすることは非常に重要です。イメージはコンテナの基礎となるものであり、コンテナは実行中のインスタンスです。使用していないイメージやコンテナが多すぎると、大量のストレージスペースを占有し、システムの速度が低下する可能性があります。
したがって、不要なプロジェクトを多くインストールしないように注意し、コンピュータのパフォーマンスを無駄に消費しないようにしましょう。