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の詳しい説明

推薦する

Win10でIIS10を構成し、ASPプログラムのデバッグをサポートする手順

マイクロソフトIIS (Internet Information Server) は、Microso...

開発者とオペレーターが注目すべき Linux デバッグ ツール [推奨]

システム パフォーマンスの専門家である Brendan D. Gregg 氏は、LinuxCon N...

HTML の左右レイアウトのサンプルコード

CS: ...コードをコピーコードは次のとおりです。 html,body{ margin:0px; ...

Dockerfileの指示と基本構造の説明

Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...

TypeScript のユニオン型、交差型、型ガード

目次1. ユニオンタイプ2. クロスオーバータイプ3. 型保護3.1 カスタム型保護3.2 保護の種...

Nginx ログ出力のリクエスト後パラメータを設定する方法

【序文】当プロジェクトの SMS 機能は、第三者に接続することです。第三者からの元の受信確認要求は ...

VMware12 インストール centOS8 構成グラフィック チュートリアルの詳細説明 (vm 仮想マシン インストール centos8 チュートリアル)

数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...

サイト全体を灰色にするCSSコードのまとめ

国務院は本日、新型コロナウイルス感染症との闘いで殉教した方々と犠牲者に対し、全国各民族人民の深い哀悼...

フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法

序文この記事を書いた主な理由は、チームリーダーが、ブラウザを使用してコンピューターのカメラを呼び出し...

IOSデータベースアップグレードデータ移行の詳細な例

IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...

JavaScript キャンバスで動的な点と線の効果を実現

この記事では、動的な点と線の効果を実現するためのJavaScriptキャンバスの具体的なコードを参考...

MySQLでルートユーザーのパスワードを変更する方法

方法1: SET PASSWORDコマンドを使用する mysql> username@loca...

MySQL の複合インデックスはどのように機能しますか?

目次背景複合インデックスを理解する左端一致原則フィールド順序の影響複合インデックスは単一のインデック...

Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する

マスタースレーブレプリケーションモードのクラスターでは、通常、1 つのマスターノードと 2 つ以上の...

VPSサーバーでよく使われるパフォーマンステストスクリプトの概要

これは、VPS サーバー用の一般的なワンクリック パフォーマンス テスト スクリプトです。マシンの構...