10分で自分のイメージを構築する方法を学ぶ

10分で自分のイメージを構築する方法を学ぶ

Docker イメージを作成するには、一般的に 2 つの方法があります。

  1. ハブウェアハウスの既存の環境を使用して、イメージ作成を完了するために使用するソフトウェア環境をインストールします。
  2. Dockerfileを通じてイメージの作成を完了する

変換のために既存のイメージを引き出す

このセクションでは、ppocr イメージをベース イメージとしてプルして変更するプロセスを紹介します。

ステップ1: PPOCRコンテナを実行する

まず、PPOCR コンテナを実行します。次のコマンドを使用できます。

 docker run -itd --name ppocr -p 9000:9000 duolabmeng666/paddlehub_ppocr:1.0 /bin/bash -c "sh /PaddleOCR/start.sh"

これにより、ポート 9000 で機能する PPOCR コンテナーがローカルで起動されます。

ステップ2: ファイルをコンテナに移動する

docker cp コマンドを使用して、必要なファイルをコンテナに移動します。

 docker cp /data/keyword_api.py ppocr:/home

これにより、keyword_api.py ファイルが実行中の PPOCR コンテナの /home ディレクトリにコピーされます。

ステップ3: 個人用画像ホスティングインスタンスを作成する

Dockerhub のネットワーク環境は良くないので、代わりに Alibaba Cloud のイメージスペースを使用することができます。コンテナ イメージ サービス (aliyun.com) で独自の個人インスタンスを作成し、対応するイメージ リポジトリを作成できます。

ステップ4: コンテナイメージを送信する

次に、次のコマンドを使用して、サーバー上の Docker レジストリにログインします。

 docker login --username=xxxxxx registry.cn-shanghai.aliyuncs.com

次にコンテナに入り、対応する依存関係をインストールします

docker exec -it container_id /bin/bash

変更後、次のコマンドを使用して実行中のコンテナをイメージとして保存します。

 docker commit [ImageId] my_saved_image

ステップ5: イメージにタグを付けてプッシュする

次のコマンドを使用して、コンテナイメージにタグを付け、Alibaba Cloud Docker Registry にプッシュします。

 docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/your_repository/your_image_name:your_image_version docker push registry.cn-shanghai.aliyuncs.com/your_repository/your_image_name:your_image_version

your_repository、your_image_name、your_image_version を実際のリポジトリ、イメージ名、バージョン番号に置き換えてください。使いたいときは容器を引き抜くだけです。

イメージをビルドするためのDockerfileファイル

既存のイメージからコンテナを送信するのではなく、カスタム Docker イメージを構築する場合は、Dockerfile を使用できます。サンプル Dockerfile のビルド手順は次のとおりです。

ステップ1: Dockerfileを書く Dockerfileというテキストファイルを作成する

FROM registry.cn-shanghai.aliyuncs.com/koudaimao/bigdata_api:v1设置端口EXPOSE 8099切换工作目录到/home WORKDIR /home安装系统工具和cron RUN apt-get update && apt-get install -y cron设置环境变量ENV PATH="/usr/local/python3.7.0/bin:/usr/local/python3.7.0/include:/home/cmake-3.16.0-Linux-x86_64/bin:/usr/local/gcc-8.2/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/gopath/bin" CUDA_VERSION=10.2.89 CUDA_PKG_VERSION=10-2=10.2.89-1 LD_LIBRARY_PATH="/usr/local/python3.7.0/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64" NVIDIA_VISIBLE_DEVICES=all NVIDIA_DRIVER_CAPABILITIES=compute,utility NVIDIA_REQUIRE_CUDA="cuda>=10.2 brand=tesla,driver>=396,driver<397 brand=tesla,driver>=410,driver<411 brand=tesla,driver>=418,driver<419 brand=tesla,driver>=440,driver<441" NCCL_VERSION=2.8.3 LIBRARY_PATH=/usr/local/cuda/lib64/stubs CUDNN_VERSION=7.6.5.32 WITH_GPU=ON WITH_AVX=ON HOME=/root CPLUS_INCLUDE_PATH=/usr/local/python3.7.0/include/python3.7: GOROOT=/usr/local/go GOPATH=/root/gopath启动命令RUN chmod +x keyword.sh添加cron 任务到容器RUN (crontab -l ; echo "0 23 * * * sh /home/keyword.sh") | crontab RUN (crontab -l ; echo "10 23 * * * rm -r /home/tmp/*") | crontab同时运行Python 代码和cron 服务CMD python3 /home/keyword_and_video_info.py && cron -f

この Dockerfile には、次の主要なステップが含まれています。

  • ベースイメージを使用します。
  • コンテナのポートと作業ディレクトリを設定します。
  • システムツールとcronをインストールします。
  • 必要に応じて環境変数を適切に設定します。
  • 指定されたキーワードを含む起動コマンド.sh
  • 毎日午後11時に実行する2つのcronタスクを追加します

ステップ2 : Dockerイメージを構築する

次のコマンドを使用して Docker イメージをビルドし、上記の Dockerfile を Dockerfile と同じディレクトリに配置します。

 docker build -t my-container-image .

ステップ3 : コンテナを実行する

次のコマンドを使用してコンテナを実行し、Python コードと cron サービスの両方をバックグラウンドで実行します。

 docker run -d my-container-image

これにより、定期的なバックグラウンド タスクを実行するためのバックグラウンド コンテナーが作成されます。

コンテナ内にバックグラウンド タスクがない場合、実行中のコンテナは作成後 1 秒で終了することに注意してください。バックグラウンドタスクがなく、コンテナを終了したくない場合は、

 CMD ["tail", "-f", "/dev/null"]

Dockerfile の最後に配置します。

<<:  2023 年のデータ分析とビジネス インテリジェンス開発のトレンドは何ですか?

>>:  Kubernetes ネットワークのトラブルシューティングの実践

推薦する

個人ウェブサイトの包囲網を突破するための4つの提案

多くのウェブマスターは、個人ウェブサイトが包囲網を突破して発展することがいかに難しいかを語っています...

WordPressテンプレートがSEOへの長い道のりを歩ませる方法

生き物を捕まえられる人が達人と呼ばれるこの時代、フロントエンド言語の基礎知識がなくても、ウェブサイト...

Hostus-Atlanta/4コア/1gメモリ/VPSの簡単なレビュー

Hostus の VPS の簡単なレビューです。HostCat の Web サイト zhujimao...

エッジコンピューティングにおける AI の利点

エッジと極端エッジの間でこれがどのように展開するか、また無線アクセス ネットワークにどのような階層が...

Greencloudvps (グリーンクラウドvps) 日本大阪データセンターVPS シンプルレビュー

昨日、greencloudvps はフラッシュセールを開催し、同じ更新価格で特別価格の VPS バー...

エッジコンピューティングは長い道のりを歩んできた

エッジコンピューティングに対する人々の期待はますます高まっています。業界には、「エッジがクラウドに取...

ウェブサイトのトラフィックを増やすためにインターネットアプリケーションの位置を占める

「アプリケーション」は以前から流行語となっています。特に、WeiboやSNSソーシャルプラットフォー...

車とクラウドの連携、クラウドコンピューティングの次の主戦場となるか?

今年下半期から、新たな「自動車クラウド」が国内クラウドベンダーの注目を集め、微妙なレース感覚を醸し出...

信頼できるオランダのVPSの推奨事項とオランダのサーバーの推奨事項

オランダはヨーロッパのデータセンターの中心地に位置しており、ヨーロッパ全体と非常に友好的な関係を築い...

医療ネットワークマーケティングにおけるSEM広告配置テクニックについての簡単な説明

近年、医療ネットワーク マーケティングはますます多くの病院に認知されるようになりました。ネットワーク...

クラウドテクノロジーはどこへ向かうのでしょうか?私たちは次の11点を予測します

近年、5Gなどの新世代技術の普及により、クラウドコンピューティング業界は大きな進歩を遂げています。ク...

ドキュメントダウンロードサイトの最適化の詳細を分析

ドキュメントダウンロードサイトも、ファイルのダウンロードを提供するウェブサイトです。このようなサイト...

対外貿易ウェブサイトを構築するときに、SEO を行う必要はありますか?最適化技術はありますか?

対外貿易ウェブサイトを構築するときにSEOを行う必要がありますか?このような疑問を持つ販売者は、一般...

中原銀行とアリババクラウドは金融技術の革新実践を積極的に推進するための戦略的協力を締結

5月28日、政府と企業の業界におけるデジタル発展の展望を共同で検討する「2021年アリババクラウドサ...

MySQL を使用して分散ロックを実装することを聞いたことがありますか?

概要以前、在庫管理システムに参加したことがあります。ビジネスの複雑さのため、それをサポートするために...