著者: jakieli 1. Docker を使用する理由当社では、レポートのプレゼンテーションに社内プラットフォームを使用する必要があります。社内プラットフォームでサポートされているデータベースはすべて正式な環境または IDC 環境であるため、ビジネス ロジックも正式な環境または IDC 環境に展開する必要があります。自社開発のリソースがクラウド上に置かれたため、テンセントは、ユーザーが IDC リソースを社内で使用する際に IDC リソースを別途申請することを推奨しなくなりました。代わりに、コンテナ サービスを使用してリソースを申請および使用することをお勧めします。具体的には、Docker を使用してテスト環境でビジネスのイメージを作成し、そのイメージをイメージ リポジトリにアップロードして、コンテナー サービスからイメージを起動する必要があります。そのため、docker を使用する必要性が生じます。 2. Dockerとは何かDocker は、ユーザーがアプリケーションを迅速に構築、テスト、デプロイできるようにするオープン ソース プラットフォームです。 Docker は、ソフトウェアとその依存関係を軽量でポータブルなコンテナーにパッケージ化することでこれを実現します。これらのコンテナーは、コード、ランタイム、ライブラリ、環境変数、システム ツールなど、アプリケーションの実行に必要なすべてのものが含まれるスタンドアロンの実行可能パッケージです。 Docker の重要な機能は、環境の違いを保護できることです。つまり、アプリケーションとその依存関係が Docker コンテナにパッケージ化されている限り、アプリケーションはどの環境で実行されても一貫して動作します。これにより、「自分の環境では動作する」という問題がなくなり、「一度ビルドすればどこでも実行できる」という目標が達成されます。 Docker のもう 1 つの利点は、迅速な展開です。 Docker は、コンテナの起動が非常に速く、1 つのコンテナ内のプログラムが正しく実行されることを保証している限り、実稼働環境にデプロイされているコンテナの数に関係なく、正しく実行されることを確信できるため、迅速なアプリケーション デプロイに最適です。 Docker の主要コンポーネントには、Dockerfile ファイル、Docker イメージ、Docker コンテナが含まれます。 Dockerfile は、Docker イメージを組み立て、その内部に何が含まれるかを定義するコマンドを含むスクリプトです。 Docker イメージは、Docker コンテナを作成するために使用される読み取り専用テンプレートです。 Docker コンテナは、Docker イメージから起動される実行中のインスタンスです。 Docker は、アプリケーションの展開プロセスを簡素化し、開発者に移植性、一貫性、効率性を提供するため、広く使用されています。 Docker の革新的な点は、プログラムのすべての依存関係をまとめてパッケージ化することで、環境管理を実行する際の面倒な手順を簡素化できることです。 3. Dockerの使い方1. Dockerのインストールdocker のインストール コマンドは、オペレーティング システムによって異なります。今回はUbuntuを例にdockerのインストール方法を説明します。次の手順はすべて、Hunyuan 大規模言語モデルの戻りから派生したものです。 Ubuntu に Docker をインストールするには、次の手順に従います。 (1)パッケージインデックスを更新する: (2)依存関係をインストールする: (3)公式Docker GPGキーを追加します。 (4)Dockerの安定版のリポジトリを設定します。 (5)パッケージインデックスを更新する: (6)Dockerをインストールする: (7)Dockerが正常にインストールされたことを確認します。 Hunyuan モデルに記載されている手順に従ってインストールを実行しましたが、手順 4 ~ 6 で問題が発生しました。環境内の lsb_release 実行エラー: このエラーを解決するために長い時間を費やしましたが、それでもうまくいかず、最終的には回り道をして解決しました。理論的には、4 番目のステップの目的は、現在のシステムの安定した Docker バージョンを指定することです。これは、次のコマンドで置き換えることができます。 手順 4 で codename の値を $(lsb_release -cs) に置き換え、手順 6 を実行して成功します。それでも実行が失敗する場合は、新しいファイル /etc/apt/sources.list.d/docker.list を作成し、手順 4 の前半を次のように置き換えます。 ファイルに書き込みます。「bionic」は上記のコード名です。このコマンドは正しく記述する必要があることに注意してください。 deb で始まる必要があり、stable の前にコード名の値が必要です。 2. 画像を生成する(1)Dockerfileを作成する イメージを構築する最初のステップは、Dockerfile を作成することです。私の場合は、公式ドキュメントを参考に、Hunyuan プラットフォームを使用して、ほぼ使用可能な Dockerfile を生成しました。 Hunyuan との会話は次のとおりです (もちろん、最初は要件をそれほど明確に伝えませんでしたが、数回の会話の後、要件は次のように最適化されました。
Hunyuan の戻り値は次のとおりです。 テスト後、この Dockerfile が利用可能になります。ある側面から見ると、大規模言語モデルは作業効率の向上に非常に効果的であることも示しています。 (2)ミラーリポジトリ Docker イメージを正式に作成する前に、イメージ リポジトリについて説明しましょう。 ①ミラーリポジトリとは? イメージ リポジトリは、ソフトウェア イメージ (Docker イメージなど) を保存、配布、取得するための集中型サービスです。イメージ リポジトリを使用する理由はいくつかあります。
要約すると、イメージ リポジトリを使用すると、ユーザーはソフトウェア イメージをより迅速かつ安全に、便利に管理および配布できるため、開発効率とチームのコラボレーションが向上します。 ② よく使われる画像リポジトリ 一般的に使用される Docker リポジトリには次のものがあります。
これらのリポジトリは、ユーザーに便利で安全かつ効率的な Docker イメージの保存および配布ソリューションを提供し、ユーザーがアプリケーションをより適切に管理および展開できるようにします。 (3)Dockerfileを使ってイメージを作成する Dockerfile を生成したら、Dockerfile を使用してイメージを生成します。ローカルでテストするだけの場合は、docker build コマンドを使用できます。 イメージをイメージリポジトリに保存する場合は、イメージを作成するときに、イメージの名前をより「詳細」で美しくする必要があります。具体的には、コンテナ サービスで後で使用するためにイメージをイメージ リポジトリに保存する場合は、イメージに名前を付けるときに、後で使用する必要があるイメージ リポジトリのアドレスと個人用フォルダーをイメージ名に書き込む必要があります。最初にテスト用の個人用イメージを作成することをお勧めします。独自の倉庫アドレスを作成したら、イメージをビルドするときに、イメージ名として倉庫アドレスを指定する必要があります。 その中でも最新のものは倉庫のタグです。イメージを作成した後、次のコマンドを使用して、イメージが正常に作成されたかどうかを確認できます (結果は投稿されませんが、成功したかどうかは一目でわかります)。 3. 画像を開始するイメージを作成したら、次のコマンドで起動できます。 test-container は、イメージが起動された後のコンテナの名前です。起動後、次のコマンドを使用してコンテナの現在の実行ステータスを確認できます。 返される形式は次のとおりです。 ps の代わりに ps -a を使用することをお勧めします。 ps -a を使用すると、過去に停止されたコンテナも含め、すべてのコンテナのステータスを表示できます。 (1)コンテナの稼働状況 前述のように、ps -a コマンドを使用してコンテナの現在の実行ステータスを表示できます。STATUS 列には、さまざまなコンテナの現在の実行ステータスが表示されます。 STATUS の可能な値には、Up、Exited、Created、Restarting、Removing、Dead などがあります。これらの値の具体的な意味は次のとおりです。
① 検査コマンド 上記の値は、Docker のバージョンとオペレーティング システムによって異なる場合があります。より詳細な情報を取得するには、docker inspect コマンドを使用してコンテナの詳細情報を表示します。例えば: 検査コマンドの戻り値は、オブジェクトのすべてのプロパティと構成を含む JSON ファイルです。一般的なフィールドには、「Id」、「Name」、「State」、「Mounts」、「NetworkSettings」などの値が含まれます。ここでは詳しくは説明しませんので、興味のある方はご自身で試してみてください。 ②退出理由分析 STATUS の Exited ステータスに戻りましょう。このステータスのさまざまな値は、コンテナが終了した理由を反映している可能性があります。 Docker ps コマンドの STATUS 列に Exited と表示されている場合、コンテナが終了したことを意味します。 Exited の後の数字は、コンテナが終了したときのステータス コードを示します。ステータス コード 0 はコンテナーが正常に終了したことを示し、ステータス コード 0 以外の場合はコンテナーが異常終了したことを示します。 ゼロ以外のステータス コードは通常、コンテナーの実行中にエラーが発生したことを示します。以下に、一般的なゼロ以外のステータス コードとその意味を示します。
これらのステータス コードは一意ではなく、特定のステータス コードはアプリケーションごとに異なる場合があることに注意することが重要です。 ③ ログコマンド 実際の使用時には、エラーに関するより詳細な情報を取得するためにコンテナのログを確認することをお勧めします。コンテナが実行後に Exited 状態になっている場合は、inspect コマンドを使用して現在の終了の考えられる理由を表示するだけでなく、docker logs コマンドを使用してコンテナの実行中のログを表示することもできます。具体的なコマンドは以下のとおりです。 「9c436ea546b9」は Container_Id です。実際のアプリケーションでは、プロセスが異常終了した理由を調べるために logs コマンドを使用しました。 スクリプトが間違って書かれていて、true が ture と書かれていました (これは私が Hunyuan の戻り値に基づいて書いた数少ないコードの 1 つで、これも人々がそれほど信頼できないことを示しています)。笑。 さらに、起動スクリプトで nohup を使用してアプリケーションを起動し、プログラムの実行ログをファイルにリダイレクトすることをお勧めします。スクリプトがデーモン プロセスのみを起動する場合は、起動スクリプトの後にループ ステートメントまたは wait コマンドを追加して、イメージを継続的に実行できるようにすることができます。 4. コンテナに入るコンテナに入るには、次のコマンドを使用できます。 CONTAINER ID は、上記の docker ps コマンドによって返される最初の列です。コンテナに入った後は、ローカル システムと同じようにデバッグできます。スクリプトや他のコマンドを起動することで、実行したいコマンドが正しいかどうかを確認できます。 5. 容器を閉じる一般的に、ローカルでデバッグする場合は、次のコマンドを使用してコンテナをシャットダウンできます。 CONTAINER ID は、上記の docker ps コマンドによって返される最初の列です。 stopコマンドを使用した後、ps -aコマンドを再度呼び出して、現在のdockerプロセスの状態を表示できます。 6. 画像をプッシュするローカル テストに合格したら、次のコマンドを使用して、生成されたイメージをイメージ リポジトリにプッシュできます。 このとき、3.2.3 で述べたイメージ作成時に指定した -t name が効いてきます。ここで、イメージのコマンドを指定してプッシュします。プッシュが成功すると、ウェアハウスで、myusername ディレクトリの下のタグが最新のミラーであることを確認できます。 7. 画像を更新するテスト中に、いくつかの環境上の問題が発生しました (ここではイメージを更新する方法の例を示します。環境上の問題は後で他の手段で解決されました)。たとえば、Python 3.12 を使用する必要がありますが、Python 3.12 は公式の Python Web サイトで正式にサポートされていません。 apt-install ではインストールできず、次のコマンドを実行すると失敗します。 PPA のインストールに失敗しました。少し努力しましたが、問題は解決しませんでした。このとき、Python 3.12 をローカルにインストールし、Python 3.12 のインストールフォルダをダウンロードして、このフォルダをイメージにコピーし、3.4 で述べた方法を使用してコンテナに入り、Python 3.12 のパスを入力して ./configure、make -j、make altintall を通じてインストールするという回り道も考えました。インストール成功後の結果: このとき、コンテナを終了し、docker commit メソッドを使用して前回の操作を保存します。 docker commit の定義は docker --help から確認できます。
このことから、コミットの役割は現在のコンテナに変更を保存することであることがわかります。具体的なコマンドは次のとおりです。 ここで、「10074a786927」は上記の「コンテナ ID」です。送信が成功したら、イメージリポジトリにプッシュします。 8. コンテナを削除する3.3 ではコンテナの起動方法について説明し、3.4 ではコンテナに入る方法について説明します。これら 2 つのポイントに加えて、docker ps -a コマンドを使用して、コンテナの現在の実行ステータスを表示することもできます。コマンドの戻り結果には、コンテナの名前が表示されます。いくつかのコンテナを削除したい場合は、次のコマンドを使用して削除できます。 ここで、my_container はコンテナの名前です。 9. 画像を削除する前回の 3.2.3 では、docker イメージを使用して現在のイメージのステータスを表示できることを説明しました。一部のイメージが不要になり、削除する必要がある場合は、次のコマンドを使用して削除できます。 ここで、image_id は画像の ID です。 4. イメージの展開イメージをウェアハウスにアップロードした後、独自のコンテナ構成プラットフォームにイメージをデプロイできます。イメージの展開環境やプラットフォームはそれぞれ異なるため、展開については独自のプラットフォーム構成ガイドを参照してください。ここでは例を挙げません。 |
<<: 適切なクラウド サービス プロバイダーを選択するにはどうすればよいでしょうか? IDCの見解を見る
>>: Kubernetes PodでIPアドレスを取得する方法
著作権法改正案では、インターネットに関するいくつかの規定が定められている。侵害に対する賠償金は最大1...
最近、百度が発表した「百度ウェブ検索品質白書」がウェブマスターの間で広く流布され、白書に関する議論も...
VMware と Nvidia のコラボレーションの新たな章である Project Monterey...
サイトナビゲーションはサイトデザインの重要な部分です。ナビゲーションバーがないと、ユーザーは必要な情...
SEO、この3つの簡単な言葉は、ウェブマスターが毎日目にする最も一般的な言葉だと思います。SEOを行...
Serverpronto は、長い歴史 (2003 年) と強力なバックグラウンドを持つ IDC で...
私たちは、農業事業が少々田舎っぽかったり、少々小規模であったりすることを恐れません。しかし、農業ビジ...
以前、SEO チャネルについてお話ししましたが、その中で非常に重要なステップは語彙データベースの確立...
「イカゲーム」の人気に伴い、「イカ」マーケティングも開始されました。このマーケティングには失敗と成功...
パブリック クラウド全体とエッジでアプリケーションを提供する企業が増えており、Kubernetes ...
著者 |ヤン・ジェン制作 | 51CTO テクノロジースタック (WeChat ID: blog) ...
ウェブマスターはどうすれば鋭いエッジを避けて企業に利益をもたらすことができるのか会社の従業員として、...
dediserve.com はアジアのインドネシア データ センターにサーバーを立ち上げたばかりで、...
Racknerdは、中国の建国記念日に2つの新しい安価な米国VPSプロモーションを追加しました。1....
最近、テンセントは組織構造の調整とモバイルインターネット戦略のアップグレードを発表しました。テンセン...