Docker Compose の実践とまとめ

Docker Compose の実践とまとめ

Docker Compose は、Docker コンテナ クラスターのオーケストレーションを実現します。docker docker-compose.ymlファイルを通じてサービスとその必要な依存関係を定義し、テスト環境、本番環境、その他の環境で簡単に実行できます。

書類

製品マニュアル

Compose ファイル バージョン 3 リファレンス

Docker 入門から実践まで [中国語]

Composeをインストールする

Compose は Docker Engine に依存しているため、環境に Docker がインストールされていることを確認する必要があります。主に 2 つのステップに分かれている公式チュートリアルを参照してください。

# 1. Compose をダウンロードし、usr/local/bin/ ディレクトリのファイルのみを実行します。# ダウンロードに失敗した場合は、次の概要を参照してインストール用のアドレスを指定します。sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 2. Compose実行ファイルに実行権限を追加する sudo chmod +x /usr/local/bin/docker-compose

# ヘルプを表示し、インストールが成功したかどうかをテストするには、次のコマンドを入力します。docker-compose -h

Compose は、Docker の公式 GitHub リポジトリ docker/compose でオープンソース化されています。すべての Compose は、リポジトリのリリースで公開されます。ステップ 1 では、curl コマンドを使用して、リリースから実行可能ファイルをダウンロードします。uname uname -suname -mシステムのカーネル名とハードウェア アーキテクチャを読み取って、必要な Compose バージョンと一致させることができます。curl curl -L パラメータは、HTTP 要求がリダイレクトに従うようにし (デフォルトでは従いません)、-o (小文字の o) は、サーバーの応答をファイルとして保存し、usr/local/bin/ に直接ダウンロードします。ファイル名は docker-compose です。このパスは既に環境変数に含まれているため、ステップ 2 を完了して実行権限を追加すれば、どこからでも使用できます。

GitHub から直接ダウンロードすると遅くなります。次のアドレスからダウンロードできます。

# https://vuepress.mirror.docker-practice.com/compose/install/
sudo curl -L https://download.fastgit.org/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

はじめる

Composeのテンプレートの指示はDockerのrunコマンドに関連するパラメータと非常に似ています。dockerコマンドを忘れた場合は、以前のブログを参照してください。Dockerの実践とコマンドのまとめ

Compose には 2 つの重要な概念があります。

  • サービス: アプリケーションのコンテナ。実際には同じイメージを実行する複数のコンテナインスタンスを含めることができます。
  • プロジェクト: docker-compose.ymlファイルで定義された一連の関連アプリケーション コンテナで構成される完全なビジネス ユニット

docker-compose.ymlの形式は次のとおりです。注意: YAML ファイルでは、キー値:インデントは階層を示します。インデントで使用するボリュームとネットワークは宣言する必要があることに注意してください。

#バージョンを指定: "3"
# サービスのコレクション:
  # サービスの 1 つ、サービス名: webapp
  ウェブアプリ:
    # サービスで使用する画像を指定します: examples/web
    # ポートマッピングポート:
      - 「80:80」
    # データ量:
      - "/データ"

使いやすい

Compose で Tomcat、MySQL、redis を起動し、 docker-compose.ymlを作成します。

バージョン: "3.0"

サービス:
  トムキャット:
    コンテナ名: mytomcat # --name
    イメージ: tomcat:8.0-jre8
    ポート:
      - 「8080:8080」
    ボリューム:
      - "tomcatwebapps:/usr/local/tomcat/webapps"
    ネットワーク:
      -ネットワーク
    # tomcatサービスはmysqlとredisに依存します
    依存:
      -MySQLについて
      - レディス
  マイスク:
    コンテナ名: mysql
    イメージ:mysql:5.7.32
    ポート:
      - 「3306:3306」
    ボリューム:
      - 「mysqldata:/var/lib/mysql」
      - 「mysqlconf:/etc/mysql」
    環境:
      -MYSQL_ROOT_PASSWORD=1234
    ネットワーク:
      ネットワーク:
  レディス:
    コンテナ名: redis
    イメージ: redis:5.0.10
    ポート:
      - 「6379:6379」
    ボリューム:
      - 「redisdata:/データ」
    コマンド: "redis-server --appendonly yes"
    ネットワーク:
      ネットワーク:

# 使用するボリュームとネットワークはボリュームを宣言する必要があります:
  tomcatwebアプリ: 
  mysqlデータ:
  mysqlconf:
  再データ: 

ネットワーク:
  # 「some_network」という名前のネットワークを宣言します:

docker-compose.ymlが配置されているパスでdocker-compose upを実行して、Compose プロジェクトを起動します。使用されているイメージがダウンロードされ、フォアグラウンドでログが実行されます。Ctrl + C で終了できます。

バックグラウンドでdocker-compose up -dを実行する必要がある場合は、 docker psを使用して、Compose が yaml に基づいて関連コンテナーを作成したかどうかを確認できます。docker docker-compose downを使用して Compose を停止し、自動的に作成されたブリッジを削除します。

ネットワークを表示するにはdocker network ls 、データ ボリュームを表示するにはdocker volume ls使用します。Compose によって定義されるネットワークまたはデータ ボリュームの名前の形式は、docker-compose.yml が配置されているフォルダーの名前にアンダースコアと YAML で定義された名前を加えたものです。「dockerfile」フォルダーに YAML ファイルを作成して起動すると、ネットワーク名はdockerfile_some_networkになります。

tomcat サービスは、 redis および mysql サービスに依存していることを示す、 depends_onを使用します。Compose は最初に依存関係を開始してから、それを起動します。

コマンドのソート

Docker Compose のコマンドは Docker のコマンドと似ています。--help パラメータを使用して、対応するコマンドの使用方法を照会できます。

docker-compose --help

デフォルトの起動テンプレート ファイルの名前は docker-compose.yml です。-f を使用してカスタム テンプレート ファイルを指定できます。config コマンドを使用して、テンプレート ファイルの構文が正しいかどうかを確認できます。

docker-compse には多くのサブコマンドも含まれています。
開始と停止関連: 上、下、再起動、停止、一時停止、一時停止解除

関連リソース: ps、top、kill、run

コンテナに入る: exec

ログの表示: ログ

多くのサブコマンドには、対象となる操作の特定のサービス名を続けることができます。以下は、1 つずつリストされているわけではありません。
docker-compose helpに続けてサブコマンド名を入力すると、その使用方法を問い合わせることができます。

# yaml で定義されたすべてのコンテナをバックグラウンドで起動します docker-compose up -d
#mysqlサービスのみを起動すると、依存するサービスも起動します
docker-compose up mysql は起動するサーバー名を指定します。
# コンテナを停止し、自動的に作成されたブリッジを削除します docker-compose down 
# すべてのサービスを再起動してから特定のサービスを指定します
docker-compose の再起動

# 一時停止と再開 docker-compose pause
docker-compose 一時停止解除

# redis サービスに入り、docker-compose exec redis bash を終了します

# 現在の yaml で定義されているコンテナの情報を一覧表示します docker-compose ps

# 現在の yaml で定義されているコンテナを削除します。まずコンテナを停止し、特定のサービスを指定する必要があります。
docker-compose rm

# 各サービスコンテナで実行中のプロセスを表示する docker-compose top

# デフォルトでログを表示します。すべての YAML ファイルを表示します。特定のサービスを追跡できます。
# -f は追跡を継続でき、新しいログはすぐに画面に表示されます docker-compose logs

参考文献

Curl の使い方ガイド [プログラミングの悪い人] Docker コンテナ技術と Docker-Compose の実践

Docker Compose の実践とまとめについてはこれで終わりです。より関連性の高い Docker Compose の実践コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker-compose チュートリアルのインストールとクイックスタート
  • Docker Compose は MySQL に接続するために SpringBoot プロジェクトをデプロイしますが、そこで遭遇する落とし穴があります。
  • Docker Composeでコンテナ管理の問題を解決する
  • Docker Compose のインストールと使用手順
  • Docker Compose ワンクリック ELK デプロイ方式の実装
  • docker compose helloworld を使い始めるための詳細なプロセス

<<:  Vue を使用して CSS トランジションとアニメーションを実装する方法

>>:  素晴らしいCSS属性MASKの詳しい説明

推薦する

HTML テーブルに複雑なテーブル ヘッダーを実装するためのサンプル コード

複雑な表を作成するには HTML を使用します。複雑なテーブルでは通常、td の rowspan 属...

MySQL binlog_ignore_dbパラメータの具体的な使用法

序文:前の記事を読んだ後、binlog はデータベースで実行されたすべての DDL および DML ...

Vue-CLI マルチページディレクトリパッケージ化手順の記録

ページディレクトリ構造 デフォルトの HTML テンプレート ファイル public/index.h...

Linux で固定 IP を設定する方法 (テスト済みで効果的)

まず、仮想マシンを開きます xshell5 を開いて仮想マシンに接続します (より便利です。Linu...

JavaScript を使用してページ要素のオフセットを取得/計算する方法

質問コントロールをクリックすると、コントロールの下にフローティング レイヤーが表示されます。通常の方...

Dockerコンテナのネットワークポート設定プロセスの詳細な説明

ネットワークポートの公開実際、Docker にはネットワーク ポートの公開に関わる 2 つのパラメー...

Vue で Excel インポート機能を実装する詳細な手順

1. フロントエンド主導の実装手順最初のステップは、ページのインポートボタンをクリックしてExcel...

JS を使用して配列内の要素の存在を 10 分で判断する

序文フロントエンド開発では、配列内に要素が存在するかどうかを判断する必要があることがよくあります。実...

Ubuntuで余分なカーネルを削除する方法

ステップ1: 現在のカーネルを表示する 読み取る $ uname -a Linux rew 4.15...

要素のフォームコンポーネントに関する注意事項

要素フォームとコード表示詳細はエレメントフォーム公式サイトをご覧ください構造と機能の分析紹介とソース...

JavaScript における Arguments オブジェクトの使用に関する詳細な説明

目次序文議論の基本概念議論の役割実パラメータと仮パラメータの数を取得する実際のパラメータ値を変更する...

Windows サーバー管理におけるセキュリティの考慮事項

ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...

CSSの省略記号とパディングを組み合わせた場合の問題の詳細な説明

CSS によるテキストの切り捨てテキストを自動的に切り捨てるスタイル コードを実装するには、次のコー...

jQuery は、画像を切り替えるための左ボタンと右ボタンのクリックを実装します。

この記事では、左ボタンと右ボタンをクリックすることで画像を切り替えるjQueryの具体的なコードを例...

大きな MySQL テーブルに列を追加する方法

質問は https://www.zhihu.com/question/440231149 から参照さ...