Dockerバッチコンテナオーケストレーションの実装

Dockerバッチコンテナオーケストレーションの実装

導入

Dockerfile ビルドの実行は、単一のコンテナの手動操作です。マイクロサービス アーキテクチャを使用する場合は、100 を超えるコンテナを起動する必要があります。それらの間の依存関係をどのように維持すればよいでしょうか?
Docker Compose は、コンテナを簡単かつ効率的に管理し、複数のコンテナを定義および実行するために使用されます。

3 つのステップ:

  • Dockerファイル
  • サービスと docker-compose.yml
  • docker-compose を起動する

初めての経験

1.Dockerファイル

python:3.7-alpine より
WORKDIR /コード
ENV FLASK_APP app.py
環境変数 FLASK_RUN_HOST 0.0.0.0
apk add --no-cache gcc musl-dev linux-headers を実行します
コピー requirements.txt requirements.txt
pip install -r requirements.txt を実行します。
コピー 。 。
CMD ["フラスコ", "実行"]

2.サービス

インポート時間
Redisをインポートする
FlaskからFlaskをインポート
アプリ = Flask(__name__)
キャッシュ = redis.Redis(ホスト = 'redis'、ポート = 6379)
get_hit_count() を定義します:
  再試行 = 5
  真の場合:
    試す:
      cache.incr('hits') を返します
    redis.exceptions.ConnectionError を除き、exc として:
      再試行 == 0 の場合:
        昇給
      再試行 -= 1
      時間.睡眠(0.5)
@app.route('/')
デフハロー():
  カウント = get_hit_count()
  'Hello World! {} 回表示されました。\n' を返します。format(count)

ドッカーの作成

バージョン: '3'
サービス:
ウェブ:
 建てる: 。
 ポート:
- 「5000:5000」
 ボリューム:
- .:/コード
 -logボリューム01:/var/log
 リンク:
- レディス
レディス:
 画像: redis
ボリューム:
ログボリューム01: {}
docker-compose を起動する
compose-demo_web_1 を開始しています...完了しました
compose-demo_redis_1 を開始しています...完了しました
compose-demo_redis_1、compose-demo_web_1 にアタッチする
redis_1 | 1:C 2020年9月12日 07:34:09.654 # oO0OoO0OoO0Oo Redis が起動しています oO0OoO0OoO0Oo
redis_1 | 1:C 2020 年 9 月 12 日 07:34:09.655 # Redis バージョン = 6.0.7、ビット = 64、コミット = 00000000、変更 = 0、pid = 1、開始しました
redis_1 | 1:C 2020 年 9 月 12 日 07:34:09.655 # 警告: 設定ファイルが指定されていません。デフォルトの設定を使用します。設定ファイルを指定するには、redis-server /path/to/redis.conf を使用します。
redis_1 | 1:M 2020 年 9 月 12 日 07:34:09.657 * 実行モード = スタンドアロン、ポート = 6379。
redis_1 | 1:M 2020 年 9 月 12 日 07:34:09.657 # 警告: /proc/sys/net/core/somaxconn が 128 という低い値に設定されているため、TCP バックログ設定 511 を適用できません。
redis_1 | 1:M 2020年9月12日 07:34:09.657 # サーバーが初期化されました
redis_1 | 1:M 2020 年 9 月 12 日 07:34:09.658 # 警告: overcommit_memory が 0 に設定されています。メモリ不足の状況では、バックグラウンド保存が失敗する可能性があります。この問題を修正するには、/etc/sysctl.conf に 'vm.overcommit_memory = 1' を追加して再起動するか、コマンド 'sysctl vm.overcommit_memory=1' を実行してこれを有効にします。
redis_1 | 1:M 2020年9月12日 07:34:09.658 * バージョン6.0.7で生成されたRDBをロードしています
redis_1 | 1:M 2020年9月12日 07:34:09.658 * RDBの経過時間156秒
redis_1 | 1:M 2020年9月12日 07:34:09.658 * 作成時のRDBメモリ使用量 0.77 Mb
redis_1 | 1:M 2020年9月12日 07:34:09.658 * ディスクからDBがロードされました: 0.000秒
web_1 | * Flask アプリ「app.py」の提供
web_1 | * 環境: 本番
web_1 | 警告: これは開発サーバーです。本番環境では使用しないでください。
web_1 | 代わりに本番環境の WSGI サーバーを使用してください。
web_1 | * デバッグモード: オフ
YML ファイル ルール バージョン: "1.0" #versionservices: #service listservice1:
    #サービス構成 container_name: #コンテナ名depends_on: #依存関係リスト -depend1
    -依存2
    画像: #Mirror-image1
    - 画像2
    build:. #ビルドディレクトリ network: #ネットワーク......
  サービス2:テスト2
    ......
volumnes: #マウントディレクトリリスト networks: #ネットワークリスト configs: #その他の設定

Docker バッチコンテナオーケストレーションの実装に関するこの記事はこれで終わりです。Docker バッチコンテナオーケストレーションに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • IDEA での Docker Compose コンテナ オーケストレーションの実装
  • Dockerデータボリュームとコンテナオーケストレーションの使用
  • Docker コンテナ オーケストレーション ツール Compose (はじめに)
  • Docker シリーズ: Docker Compose を使用してコンテナをオーケストレーションする
  • Docker データボリュームコンテナの作成と使用状況分析
  • Dockerコンテナのデータボリュームの詳細な説明
  • Spring Boot プロジェクトで Docker イメージを生成し、コンテナのデプロイを完了する方法
  • Dockerコンテナ内にkibanaトークナイザーをインストールする方法
  • Dockerコンテナオーケストレーション実装プロセス分析

<<:  VueのRender関数

>>:  MySQL の挿入ステートメントの使用実体験

推薦する

オブジェクトのプロパティを反復処理する際の TypeScript の問題

目次1. 問題2. 解決策1. オブジェクトをanyとして宣言する2. オブジェクトのインターフェー...

シンプルなショッピングカートの最も完全なコード分析を実装する JavaScript (ES6 オブジェクト指向)

この記事では、シンプルなショッピングカートを実装するためのJavaScriptの具体的なコードを参考...

mysql 5.6.23 winx64.zip インストール詳細チュートリアル

WindowsにMySQLの圧縮バージョンをインストールする方法の詳細については、以下を参照してくだ...

Linux ファイル管理コマンド例の分析 [表示、閲覧、統計など]

この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...

DockerでKafkaをデプロイする方法

目次1. Dockerをビルドする2. コンテナに入る3. 設定ファイルを変更する4. Kafkaを...

Linux 上でプライベート Git サーバーを構築するための詳細なチュートリアル

1. サーバーのセットアップリモート リポジトリは実際にはローカル リポジトリと何ら変わりなく、純粋...

Vue コンポーネントの構成構造とコンポーネント登録の詳細

目次1. コンポーネントの構成2. コンポーネント名2.1 コンポーネントの命名3. グローバル登録...

測定画像HTTPリクエスト

一般的なブラウザでテスト ページを開き、Fiddler で http リクエストを表示してください。...

ウォーターフォールフローレイアウトを実装する3つの方法

序文今日、Xianyuを閲覧していたとき、各行の高さが同じではないことに気付きました。調べてみると、...

Mysqlは実行中のトランザクションを照会し、ロックを待機する方法

navicatを使用してテストと学習を行います。まず、 set autocommit = 0;を使用...

JavaScript における async と await の使い方とメソッド

JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...

uniapp WeChatミニプログラムのグローバル共有を実装するためのサンプルコード

目次グローバル共有コンテンツファイルを作成するファイルをインポートしてグローバルに登録するページ共有...

Docker 可視化グラフィックツール portainer の詳細な説明

目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...

イメージのアップロードとダウンロードに docker をプロキシするためのプライベート ライブラリとして nexus を使用する

1. Nexusの設定1. Dockerプロキシを作成する外部ネットワーク ウェアハウスからローカル...

広告を閉じる効果を実現するJavascript

参考までに、Javascript を使用して広告を閉じる方法に関するケース スタディを示します。詳細...