Docker Composeは、マルチコンテナーDockerアプリケーションを定義して実行できるツールです。
Composeを使用すると、アプリケーションのサービス、ネットワーク、ボリュームを1つのYAMLファイルで定義し、1つのコマンドでアプリケーションをスピンできます。
Composeは、単一ホストアプリケーションの展開、自動テスト、ローカル開発など、さまざまな目的に使用できます。
このチュートリアルでは、最新バージョンのDockerComposeをCentOS7にインストールする方法について説明します。DockerComposeの基本的な概念とコマンドについても説明します。
前提条件#
このチュートリアルを続行する前に、次の前提条件を満たしていることを確認してください。
- sudo権限を持つユーザーとしてログインしました。
- CentOS7システムにDockerをインストールします。
CentOSにDockerComposeをインストールする#
CentOS7にDockerComposeをインストールするための推奨される方法は、DockerのGitHubリポジトリからComposeバイナリをダウンロードすることです。
この記事を書いている時点で、DockerComposeの最新の安定バージョンはバージョン1.23.1
です。 。 Composeバイナリをダウンロードする前に、GitHubandのComposeリポジトリリリースページにアクセスして、ダウンロード可能な新しいバージョンがあるかどうかを確認してください。
次の手順を実行して、DockerComposeをCentOS7にインストールします。
-
まず、DockerComposeバイナリを
/usr/local/bin
にダウンロードします。 次のcurl
を使用するディレクトリ コマンド:sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
ダウンロードが完了したら、次のように入力してバイナリを実行可能にします。
sudo chmod +x /usr/local/bin/docker-compose
-
インストールを確認するには、次のコマンドを入力して作成バージョンを印刷します。
docker-compose --version
出力は次のようになります:
docker-compose version 1.23.1, build b02f1306
Docker Composeの使用を開始する#
このセクションでは、DockerComposeを使用してCentOS7マシンでWordPressスタックを実行する方法を示します。
プロジェクトの新しいディレクトリを作成し、そこに移動することから始めます:
mkdir my_app && cd my_app
次に、ファイル名を付けたdocker-compose.yml
を作成します プロジェクトディレクトリ内:
nano docker-compose.yml
次のコンテンツを貼り付けます:
docker-compose.ymlversion: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
コードを1行ずつ分析してみましょう。
最初の行は、作成ファイルのバージョンを指定します。特定のDockerリリースをサポートするComposeファイル形式にはいくつかの異なるバージョンがあります。
次に、db
という2つのサービスを定義します。 およびwordpress
。各サービスは1つのイメージを実行し、docker-composeが実行されると個別のコンテナーを作成します。
db
サービス:
-
mysql:5.7
を使用します 画像。イメージがシステムに存在しない場合、ComposeはDockerHubパブリックリポジトリからイメージをプルします。 - 再起動を使用します
always
コンテナに常に再起動するように指示するポリシー。 - 名前付きボリュームを作成します
db_data
データベースを永続化するため。 -
mysql:5.7
の環境変数を定義します 画像。
wordpress
サービス:
-
wordpress
を使用します 画像。イメージがシステムに存在しない場合、ComposeはDockerHubパブリックリポジトリからイメージをプルします。 - 再起動を使用します
always
コンテナに常に再起動するように指示するポリシー。 -
wp_data
をマウントします/var/lib/mysql
へのホスト上のディレクトリ コンテナ内。 - コンテナの公開されたポート80をホストマシンのポート8080に転送します。
-
wordpress
の環境変数を定義します 画像。 -
depends_on
命令は、2つのサービス間の依存関係を定義します。この例では、db
wordpress
の前に開始されます 。
プロジェクトディレクトリから、次のコマンドを使用してWordPressアプリケーションを起動します。
docker-compose up
出力は次のようになります。
...
wordpress_1 | [Sat Oct 13 21:30:48.286382 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1 | [Sat Oct 13 21:30:48.286425 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Composeは両方のイメージをプルし、2つのコンテナーを開始して、wp_data
を作成します。 プロジェクトディレクトリ内のディレクトリ。
ブラウザを開き、http://0.0.0.0:8080/
と入力します に入ると、Wordpressのインストール画面が表示されます。
この時点で、WordPressアプリケーションが稼働しており、テーマまたはプラグインの作業を開始できます。
作成を停止するには、CTRL+C
を押します .environment変数デタッチモードで作成を開始する場合は、-d
を使用します。 フラグ:
docker-compose up -d
実行中のサービスを確認するには、ps
を使用します オプション:
docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
my_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
my_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Composeがデタッチモードで実行されている場合、サービスの使用を停止します。
docker-compose stop
コンテナを完全に削除するには、down
を使用します オプション:
docker-compose down
--volumes
を渡す スイッチはデータボリュームも削除します:
docker-compose down --volumes
Docker Composeのアンインストール#
Docker Composeをアンインストールする場合は、次のコマンドを使用してバイナリを削除するだけです。
sudo rm /usr/local/bin/docker-compose