ウィンドウズマックソフトウェア設定セキュリティ生産性リナックスAndroidパフォーマンス設定Apple すべて

LinuxでDocker Composeを使う方法

編集済み 5 数か月前 によって ExtremeHow 編集チーム

ドッカーコンテナアプリケーションデプロイメントドッカーコンポーズオーケストレーション設定スクリプティングデブオプスコマンドラインマルチコンテナ

LinuxでDocker Composeを使う方法

翻訳が更新されました 5 数か月前

Docker Composeは、複数コンテナのDockerアプリケーションを定義して実行するためのツールです。Docker Composeを使用すると、YAMLファイルを使ってアプリケーションのサービスを設定し、単一のコマンドで設定からすべてのサービスを作成して開始できます。これは、多くのリンクされたサービスを含む複雑なアプリケーションを扱う際に非常に役立ちます。このガイドの目的は、Linux上でDocker Composeを使用する方法を非常に詳細に説明することです。

DockerとDocker Composeの理解

Docker Composeに飛び込む前に、Dockerとは何かを理解することが重要です。Dockerは、開発者とシステム管理者がアプリケーションをコンテナにパッケージ化できるプラットフォームであり、これはアプリケーションのソースコードと、そのコードをどの環境でも実行するために必要なオペレーティングシステムのライブラリと依存関係を組み合わせた標準化された実行可能コンポーネントです。

Docker Composeはこれをさらに一歩進め、複数のDockerコンテナを単一のサービスとして設定して起動できるようにします。つまり、docker-compose.ymlという単純なファイルを使ってアプリケーションのすべての依存関係を管理できます。このファイルには、どのイメージを実行するか、どのポートを公開するか、ボリュームマッピングなどについての情報が含まれています。

LinuxでのDockerとDocker Composeのセットアップ

Docker Composeを使用する最初のステップは、DockerがLinuxマシンにインストールされて実行されていることを確認することです。ほとんどの最新のLinuxディストリビューションにはDockerが公式リポジトリに含まれていますが、Dockerの公式リポジトリからインストールして最新バージョンを入手することもできます。

# 署名付きHTTPS経由でリポジトリを使用できるように、aptパッケージのインデックスを更新してインストール
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y

# Dockerの公式GPGキーを追加して確認
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 安定版リポジトリを設定
sudo add-apt-repository \
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# Docker CEをインストール
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

# Dockerインストールを確認
sudo docker run hello-world

Dockerがインストールされたら、次のステップはDocker Composeのインストールです。Dockerとは異なり、Composeは別のツールです。GitHubのリリースページからDocker Composeをダウンロードできます。

# Docker Composeの現在の安定版をダウンロード
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

# バイナリに実行権限を付与
sudo chmod +x /usr/local/bin/docker-compose

# Docker Composeが正しくインストールされていることを確認
docker-compose --version

docker-compose.ymlファイルの理解

docker-compose.ymlファイルはDocker Composeを使用するための中心です。ここで、すべてのサービス(つまり、アプリケーションのコンテナ)とそれらの相互作用を定義します。docker-compose.ymlファイルの構造は非常にシンプルです。一般的には、使用するComposeのバージョンを定義することから始まり、その後にサービスのリストが続きます。

以下は基本的なdocker-compose.ymlファイルの例です:

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  database:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

上記の例では、Composeファイルはバージョン3.8を使用し、webdatabaseという2つのサービスを定義しています。webサービスはNginxイメージを使用し、コンテナのポート80をホストのポート80にマッピングします。databaseサービスは、指定されたルートパスワードでMySQLイメージを使用します。

Docker Composeを使ったアプリケーションの実行

docker-compose.ymlファイルを設定したら、マルチサービスアプリケーションを単純なコマンドで実行できます。docker-compose.ymlファイルを含むディレクトリに移動し、以下を実行します:

docker-compose up

docker-compose upコマンドは、現在のディレクトリにあるdocker-compose.ymlファイルを探し、ローカルに存在しない場合は必要なイメージを作成し、定義されたサービスを開始します。

アプリケーションをバックグラウンド(非表示モード)で実行したい場合は、-dオプションを使用します:

docker-compose up -d

Docker Compose環境の管理

Docker Composeは、環境を管理するためのいくつかのコマンドを提供します:

  1. docker-compose ps: Composeファイルで定義されたサービスのステータスを表示します。
  2. docker-compose start: サービスの既存のコンテナを開始します。
  3. docker-compose stop: コンテナを実行中の状態から停止しますが、削除はしません。
  4. docker-compose down: docker-compose.ymlファイルで定義されたすべてのコンテナを停止し、削除します。
  5. docker-compose logs: サービスのログを取得します。

Docker Composeでのボリュームとネットワークの使用

Docker Composeでは、docker-compose.ymlファイルでボリュームとネットワークを定義することもできます。ボリュームはデータを永続化するために使用され、ネットワークはサービス間の通信を支援します。

ボリュームを定義するには、Servicesセクションの下に次を追加します:

services:
  database:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

この設定は、db_dataという名前のボリュームを作成し、/var/lib/mysql内のデータベースサービスコンテナにマウントし、MySQLデータを保存します。

ネットワークもカスタマイズできます:

services:
  frontend:
    image: node:14
    networks:
      - frontend-network
  backend:
    image: node:14
    networks:
      - backend-network

networks:
  frontend-network:
  backend-network:

Docker Composeでのサービスのスケーリング

Docker Composeの強力な機能の1つは、サービスをスケーリングする能力です。これは、開発環境でのより現実的な条件をシミュレートするのに特に役立ちます。--scaleオプションを使用してサービスをスケーリングできます。

docker-compose up --scale web=3

上記のコマンドは、webサービスのインスタンスを3つ開始します。

コンテナ内でのコマンドの実行

実行中のサービス内で任意のコマンドを実行することができます:

docker-compose exec web bash

このコマンドは、実行中のwebサービスコンテナ内でbashシェルを開きます。

単一のネットワークにDocker Composeをバインドする

デフォルトでは、Docker Composeはサービスごとにデフォルトネットワークを作成しますが、すべてのサービスを同じネットワークにバインドすることもできます。

version: '3.8'
services:
  web:
    image: nginx:latest
    networks:
      - custom-network
  database:
    image: mysql:5.7
    networks:
      - custom-network

networks:
  custom-network:

webdatabaseサービスはどちらもcustom-networkに接続され、独立して通信することができます。

結論

Docker Composeは、マルチコンテナのDockerアプリケーションを管理するプロセスを簡素化する強力なツールです。docker-compose.ymlファイルでサービスを定義することにより、アプリケーションスタックをすばやくデプロイして管理できます。Docker Composeを効果的に使用する鍵は、docker-compose.ymlファイルの構成オプションを理解することです。これには、サービス、ボリューム、およびネットワークが含まれます。

この包括的なガイドは、Linux上でのDocker Composeのセットアップ方法、Composeファイルの作成、およびアプリケーションの管理方法を概観します。この知識を活用してDocker Composeを適切に使用することで、複雑なLinuxベースの環境を簡単に管理できます。自身のアプリケーションで練習して、Docker Compose構成を特定のニーズに合わせるための経験を積んでください。

記事の内容に誤りがある場合, あなたは


コメント