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

推薦する

Java プログラムでよく使用されるメモリ モジュールは何ですか?

序文コードを書くときは通常、コードとオブジェクト間のフローに重点を置きます。しかし実際のところ、Ja...

3日以内にホームページのトップ3キーワードを獲得する秘密

現在、インターネット業界の発展に伴い、SEO 手法が次々と登場し、さまざまなブラックハット SEO ...

SEO 関連性分析の観点から、Google は Twitter に影響を与えているのでしょうか、あるいはその逆でしょうか?

SEO 実践者が追いかけ、ウェッジホッピングし、調査し、疑問に思い、そして迷っていることの 1 つは...

クラウドへの移行は議論の余地のない事実ですが、本当にコストはゼロなのでしょうか?

クラウドへの移行は紛れもない事実ですが、企業顧客が安心してクラウドへビジネスを移行できるようにするに...

2年前に設立されたウェブサイトの、権威の高いものから低いものへの昇華と衰退

みなさんこんにちは。私のことを覚えていますか?私は中華名言集(www.yiyyy.com)です。2年...

racknerd: ロサンゼルス最適化ライン「専用サーバー」、月額 105 ドル、e3-1240v2/32g メモリ/1T SSD/40T トラフィック/1Gbps

Racknerdは、米国西海岸ロサンゼルスのMultacomデータセンターに、中国本土向けに最適化さ...

sharktech: 1~10Gbps トリプルネットワーク直接接続無制限トラフィックサーバー、60G 高防御内蔵、7 月のプロモーションで 50% オフ

Sharktechはプロモーションを実施しています(2018年7月)。今回は1Gbpsの帯域幅から1...

外部リンクを構築するための3つのステップ

無意識のうちに、私は長い間外部リンクを貼る作業をしていませんでした。私の現在の仕事は、プロモーション...

クラウド移行を評価し計画する方法

著者 |黄鳳達クラウド移行とは、既存のアプリケーション、データ、ワークロードを企業のオンプレミス環境...

ウェブサイトはスタートラインで勝利する:新しいウェブサイトの最適化のいくつかの小さな詳細

Xiaomao がウェブサイトの「スタートラインで勝つ」コラムを更新したのはこれで 3 日目です。「...

B2B業界のウェブサイトが販売前に達成しなければならない運用指標

よくQQで私をフォローして、「李雪江さん、なぜうちの営業スタッフはウェブサイトの会員サービスや広告サ...

検索エンジンのランキングに影響を与える要因は何ですか?

検索エンジンにおけるウェブサイトのランキングは、多くの要因によって決まります。すべてをまとめることは...

レスポンシブなウェブサイトのフロントエンドデザインについて話す

少し前までは、レスポンシブという概念は、BootstrapやAmazeなどのフレームワークコンポーネ...

ローカルSEOコミュニケーションプラットフォームを構築することの重要性についての簡単な議論

SEO知識とSEO技術の普及に伴い、SEO業界はより有意義なコミュニケーションプラットフォームや方法...

検索エンジンがオリジナルコンテンツをクロールする方法の例

検索エンジンはオリジナルのコンテンツを好み、Yahoo と Google はウェブマスター向けに明確...