Docker Composeのデプロイと基本的な使い方の詳しい説明

Docker Composeのデプロイと基本的な使い方の詳しい説明

1. Docker Composeの概要

Compose は、マルチコンテナ Docker アプリケーションを定義および実行するためのツールです。 Compose では、YAML ファイルを使用してアプリケーションのサービスを構成します。その後、1 つのコマンドで、構成からすべてのサービスを作成して起動できます。

Compose は、本番環境、ステージング環境、開発環境、テスト環境、CI ワークフローなど、あらゆる環境で動作します。

Compose の使用は基本的に 3 つのステップで構成されます。

  1. アプリケーション環境を Dockerfile で定義して、どこでも再現できるようにします。
  2. アプリケーションを構成するサービスを docker-compose.yml で定義し、分離された環境で一緒に実行できるようにします。
  3. docker-compose up と Compose start を実行し、アプリケーション全体を実行します。

docker-compose.yml 形式の例は次のとおりです。

バージョン: '3'
サービス:
 ウェブ:
  建てる: 。
  ポート:
  - 「5000:5000」
  ボリューム:
  - .:/コード
  -logボリューム01:/var/log
  リンク:
  - レディス
 レディス:
  画像: redis
ボリューム:
 ログボリューム01: {}

Compose には、アプリケーションのライフサイクル全体を管理するコマンドがあります。

  • サービスの開始、停止、再構築
  • 実行中のサービスのステータスを表示する
  • 実行中のサービスからのログ出力のストリーミング
  • サービスで1回限りのコマンドを実行する

2. Docker Composeのインストール

2.1 バイナリのダウンロードとインストール

 root@docker01:~# sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
root@docker01:~# sudo chmod +x /usr/local/bin/docker-compose

2.2 pip によるインストール (推奨)

root@docker01:~# apt-get -y pythonをインストールします
root@docker01:~# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
root@docker01:~# python get-pip.py #PIP をインストール
root@docker01:~# pip install docker-compose #docker compose をインストールします
 root@docker01:~# docker-compose version #インストールの確認

3つのDocker Composeの例

3.1 アプリケーションの構築

root@docker01:~# mkdir composetest #Docker Compose ディレクトリを作成root@docker01:~# cd composetest/
root@docker01:~/composetest# vi app.py

ヒント: Python を使用して簡単なアプリケーションを構築します。具体的なアプリケーションの内容については、公式の例を参照してください。
https://docs.docker.com/compose/gettingstarted/#step-1-setup

3.2 Dockerfileを作成する

root@docker01:~/composetest# vi Dockerfile #Dockerfileを使用してイメージをビルドします FROM python:3.4-alpine
RUN mkdir /root/.pip #pipソース設定ディレクトリを作成 ADD pip.conf /root/.pip/pip.conf #ビルドするイメージに国内のpipソースを追加 ADD ./code
WORKDIR /コード
RUN pip install -r requirements.txt #pip を使用してファイル リストに従ってインストールします CMD ["python", "app.py"]

ヒント: 上記の Dockerfile 関連コマンドについては、「004.Docker イメージ管理」を参照してください。

root@docker01:~/composetest# vi requirements.txt #インストールソフトウェアリストファイルを作成する flask
レディス
root@docker01:~/composetest# vi pip.conf #国内のpipソースを元にファイルを作成 [global]
インデックス URL = https://mirrors.aliyun.com/pypi/simple/
[インストール]
信頼できるホスト = mirrors.aliyun.com

Dockerfile の説明:

  1. Python 3.4 イメージからイメージをビルドします。
  2. pip 構成ディレクトリを作成します。
  3. イメージ内の /root/.pip/ のパスに国内の pip ソース構成ファイルを追加します。
  4. /code イメージ内のパスに現在のディレクトリ . を追加します。
  5. 作業ディレクトリを /code に設定します。
  6. Python関連のパッケージをインストールします。
  7. コンテナのデフォルトコマンドを python app.py に設定します。

3.3 Docker Compose を使用したサービスの構築

root@docker01:~/composetest# vi docker-compose.yml
バージョン: '3'
サービス:
 ウェブ:
  建てる: 。
  ポート:
   - 「5000:5000」
 レディス:
  画像: "redis:alpine"

Docker Compose の説明:

この Compose ファイルは、web と redis という 2 つのサービスを定義します。

Web サービス:

  • 現在のディレクトリにある Dockerfile から構築されたイメージを使用します。
  • コンテナ上の公開ポート 5000 をホスト上のポート 5000 に転送します。つまり、Flask Web サーバーのデフォルト ポート 5000 を使用します。

redis サービス:

Docker Hub から取得したパブリック Redis イメージを使用します。

root@docker01:~/composetest# docker-compose up -d #ビルドを開始

4つの検証確認

ブラウザアクセス: http://172.24.8.111:5000/

ルート@docker01:~/composetest# docker-compose ps
ルート@docker01:~/composetest# docker ps 

 root@docker01:~/composetest# docker イメージ ls 


ヒント:

Docker Compose を使用してビルドされたコンテナ名ルールは、[ビルドが配置されているディレクトリ]_[yml ビルド ファイルで定義されたサービス名]_[コンテナの起動シーケンス番号] です。
Docker Compose でビルドされたイメージの命名規則は、[ビルドが配置されているディレクトリ]_[yml ビルド ファイルで定義されたサービス名] であり、タグは latest です。

5マウントボリューム構造

root@docker01:~/composetest# vi docker-compose.yml
バージョン: '3'
サービス:
 ウェブ:
  建てる: 。
  ポート:
   - 「5000:5000」
  ボリューム:
   - .:/コード
 レディス:
  画像: "redis:alpine"
root@docker01:~/composetest# docker-compose up -d #再度ビルドroot@docker01:~/composetest# vi app.py
…
'Hello Docker! {} 回見られました。\n' を返します。format(count)
…

ブラウザアクセス: http://172.24.8.111:5000/


ヒント: ローカル ボリュームをコンテナーにマウントした後、ローカル ファイルをすばやく変更して、イメージを再構築せずにコンテナーを動的に変更できます。

6. Docker Composeのその他の一般的なコマンド

docker-compose up -d: サービスをバックグラウンドで実行します。
docker-compose ps: 現在実行中のコンテナを表示します。
docker-compose run: docker-compose run web env などの 1 回限りのコマンドを実行します。 

docker-compose stop: docker-compose stop webなどのサービスを停止します。

ヒント: docker-compose は、コンテナ名や ID ではなく、yaml 内のサービス名をパラメーターとして受け取ります。

docker-compose down --volumes: コンテナを完全に削除し、コンテナが使用するデータ ボリュームも削除します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • docker-compose デプロイメント PHP プロジェクト例の詳細な説明
  • Docker-compose ワンクリックデプロイ gitlab 中国語版の方法手順
  • Linux で docker-compose を使用したソフトウェア構成の詳細な説明
  • Docker-compose を使用して GitLab をデプロイする方法
  • docker-compose でデプロイしたときに MySQL にアクセスできなくなる問題の簡単な分析
  • Jenkins の docker-compose デプロイメントと構成に関する詳細なチュートリアル

<<:  Vue3の一般的なAPIの使用方法の紹介

>>:  MySQL の 4 つのトランザクション分離レベルの詳細な説明

推薦する

JS を使用して Web ページのウォーターフォール レイアウトを実装する方法

目次序文:ウォーターフォールレイアウトとは何ですか?達成方法: 1. 画像を取得する2. 画像の帯域...

Docker を使用して Jenkins をインストールするためのサンプル コード

Dockerコンテナのインストール時に遭遇しやすい2つの問題1.ポートはすでに割り当てられています(...

Ubuntu 18.04 向け VMware Tools のインストールと構成のチュートリアル

この記事では、Ubuntu 18.04でのVMware Toolsのインストールと設定について記録し...

反応ループデータの実装(リスト)

まず、バックグラウンドから来るデータをシミュレートしてみましょう。ここでは、コードをわかりやすくする...

nodejs + koa + typescript の統合と自動再起動に関する問題

目次バージョンノートプロジェクトを作成する依存関係をインストールするコンテンツの記入src/serv...

LinuxにMySQLをインストールするための詳細なチュートリアル

すべてのプラットフォーム用の MySQL ダウンロードは、MySQL ダウンロードから入手できます。...

MySQL データベースのマスター・スレーブ レプリケーションと読み取り/書き込み分離

目次1. マスタースレーブレプリケーションマスタースレーブレプリケーション3スレッドマスタースレーブ...

Pycharmとsshリモートアクセスサーバーdockerの詳細なチュートリアル

背景: 一部の実験はサーバー上で完了する必要があります。したがって、リモート サーバー上のコードをロ...

MySql 自動切り捨て例の詳細な説明

MySql 自動切り捨て例の詳細な説明友人が質問しました。プロジェクト内で挿入または更新ステートメン...

XHTML+CSS Web ページ作成における美しいスタイルシートの適用

これはかなり前に書かれた記事です。今となっては、その中の考え方は学ぶ価値があるように思えます。jb5...

MySQL データベース トランザクション例のチュートリアル

目次1. トランザクションとは何ですか? 2. トランザクションに関連するステートメントは、挿入、削...

Docker で Zookeeper をインストールする (スタンドアロンおよびクラスター)

Docker を起動したら、利用できるオプションを見てみましょう。 公式のものがある場合は、もちろ...

デザインにおいて無視できないインタラクティブデザインにおける製品状態の分析

製品デザインのプロセスにおいて、デザイナーは常に写真を非常に美しくすることを好みます。仮想ページのコ...

CSS の複雑なセレクターと CSS のフォントスタイルと色属性の詳細な説明

これまでに CSS の基本的なセレクターをいくつか学習しましたが、今日は CSS の複雑なセレクター...

Vue+ElementUI で超大規模なフォーム例を処理する方法

最近、社内の業務調整により、以前の超長文のロジックが大幅に変更されたため、リファクタリングする予定で...