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 ネットワークのトラブルシューティングの実践

推薦する

クラウド データ: サーバーの用途は正確には何であり、高品質のサーバーを選択するにはどうすればよいでしょうか?

実は編集者もこのタイトルを無意味に考えました。サーバーは何に使うのでしょうか?サーバーは、ネットワー...

コンテナ技術をスキップしてサーバーレスコンピューティングに直接進む

Docker のようなコンテナ テクノロジーは非常に強力ですが、非常に希少な人材を必要とします。サー...

ダボでのプロキシレスメッシュの実践

著者 |王成明1. 背景Dubbo 3.1 のリリースにより、Dubbo はクラウド ネイティブへの...

リバースホスト - 年間 19.99 ドル / 512 MB RAM / 60 GB ハードドライブ / 1 TB トラフィック / サンディエゴ

Reversehosts は 11 月に新しいプロモーションを開始しました。提供される SSD ハー...

dignusdata: 台湾 VPS、5T トラフィック、月額 6 ユーロのみ、2G メモリ + 25g NVMe

Dignusdataは、ウェブサイト証明書(Dignus Data DOOEL[MK])から判断する...

ある男がフォーラムを開設し、毎月カードを発行したり大口顧客に割引を提供したりして、ネガティブな話を作り出し、金銭をゆすっていた。

最近、広東省茂名市警察はインターネットを利用した犯罪行為に関わる事件を解決した。ある男が華州フォーラ...

ブランドマーケティングプロモーション、H5 をどうやって作るのか?

H5の作り方は?職場での具体的な実践から得た私の考えやアイデアに基づき、事例と組み合わせて、H5 の...

高品質の外部リンクをウェブサイトに正しく追加する方法

外部リンクは、ウェブサイトのランキングに影響を与える最も重要な要素の1つです。ランキングの品質は外部...

SEO の専門家が、ウェブマスターが知っておくべきリンクの非リンク形式を明らかにする

ほぼすべてのウェブマスターは、ウェブサイトの最適化がオンサイト最適化とオフサイト最適化の 2 つの部...

ウェブサイト運営:ユーザーエクスペリエンスはウェブサイト最適化の核心です

序文始める前に、日常生活でよく見かけるシーンを見てみましょう。ある日スーパーマーケットに買い物に行く...

usshosting-月額3.74ドル/KVM/メモリ2g/ハードディスク75g/トラフィック2T/カナダ

usshosting は非常に新しい VPS 販売業者です。公式には 2009 年に設立されました。...

百度の入札ランキングから百度検索のユーザー体験について語る

今日の中国のインターネット環境では、多くのSEO担当者が悲惨な状況に陥っています。1社の独占により、...

共同購入ウェブサイトはどのようにしてプラットフォーム変革を成功させることができるのでしょうか?

B2C ショッピング ウェブサイトがプラットフォーム ベースになる一方で、グループ購入ウェブサイトも...

racknerd: 32 台の C セグメント US クラスター サーバー - 月額 190 ドル、e3-1240/16g メモリ/500g SSD/30T トラフィック/1G 帯域幅

Racknerd は、米国西海岸のロサンゼルスと東海岸のニューヨークのオプションを含む中秋節サーバー...