ロッキーリナックス8にDocker Composeをインストールして使用する方法

イントロダクション

Dockerは、コンテナ内のアプリケーションプロセスを管理するプロセスを簡略化します。コンテナは仮想マシンに似た要素を持っていますが、より軽量でリソースに優しいです。これにより、開発者はアプリケーション環境を複数の分離されたサービスに分割することができます。

複数のサービスに依存するアプリケーションでは、コンテナを一斉に起動、通信、シャットダウンすることは素早く扱いにくくなることがあります。Docker Composeは、YAMLファイルで設定された定義に基づいてマルチコンテナのアプリケーション環境を実行するためのツールです。サービスの定義を使用して、ネットワークやデータボリュームを共有できる複数のコンテナを持つ、完全にカスタマイズ可能な環境を構築します。

このガイドでは、Rocky Linux 8 サーバーに Docker Compose をインストールし、このツールを使い始める方法を説明します。

前提条件

この記事を理解するためには、次のものが必要です:

  • Access to a Rocky Linux 8 local machine or development server as a non-root user with sudo privileges. If you’re using a remote server, it’s advisable to have an active firewall installed. To set these up, please refer to our Initial Server Setup Guide for Rocky Linux 8.
  • Docker installed on your server or local machine, following Steps 1 and 2 of How To Install and Use Docker on Rocky Linux 8.

ステップ1−Docker Composeのインストール

最新かつ安定したバージョンのDocker Composeを確実に入手するためには、公式Dockerリポジトリからこのソフトウェアをダウンロードします。

まずは、パッケージデータベースを更新しましょう。

  1. sudo dnf check-update

 

次に、Dockerのインストール中に行っていない場合、公式のDockerリポジトリを追加してください。

  1. sudo dnf config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

Rocky LinuxにはDocker専用のリポジトリはありませんが、Rocky LinuxはCentOSをベースにしており、同じリポジトリを使用することができます。これでDockerのプラグインであるDocker Composeをインストールすることができます。

  1. sudo dnf install docker-compose-plugin

 

インストールが成功したかどうかを確認するために、次のコマンドを実行することができます。

  1. docker compose version

 

これに似た出力が表示されます。

Output

Docker Compose version v2.10.2

あなたのシステムにDocker Composeが正常にインストールされました。次のセクションでは、docker-compose.ymlファイルの設定方法とこのツールを使用してコンテナ化された環境を起動する方法を説明します。

ステップ2 — docker-compose.ymlファイルの設定

Docker Composeを使用してdocker-compose.ymlファイルのセットアップと操作方法をデモンストレーションするために、公式のNginxイメージをDocker Hubから取得します。このコンテナ環境は、単一の静的HTMLファイルを提供します。

ホームフォルダ内に新しいディレクトリを作成し、それに移動してください。

  1. mkdir ~/compose-demo
  2. cd ~/compose-demo

 

このディレクトリには、Nginx環境のドキュメントルートとなるアプリケーションフォルダを設定してください。

  1. mkdir app

 

あなたの好みのテキストエディタを使用して、アプリフォルダ内に新しいindex.htmlファイルを作成してください。

  1. nano app/index.html

 

この内容をこのファイルに入れてください。

以下の文を日本語で表現する。

– 原文: ~/compose-demo/app/index.html
– 日本語: 「~/compose-demo/app/index.html」

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>

    <h1>This is a Docker Compose Demo Page.</h1>
    <p>This content is being served by an Nginx container.</p>

</body>
</html>

終わったらファイルを保存して閉じてください。もしnanoを使用している場合は、CTRL+Xを入力してから、YとENTERを押して確認してください。

次に、docker-compose.ymlファイルを作成してください。

  1. nano docker-compose.yml

 

あなたのdocker-compose.ymlファイルに以下のコンテンツを挿入してください。

docker-compose.yml-を日本語で言い換えると、以下のようになります:ドッカーコンポーズ.yml
version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

通常、docker-compose.ymlファイルはバージョン定義から始まります。これにより、Docker Composeに使用している設定バージョンを伝えます。

次に、この環境の一部であるサービスブロックを設定する場所があります。あなたの場合、webという1つのサービスを持っています。このサービスは、nginx:alpineイメージを使用し、ポート指示でポートリダイレクションを設定します。ホストマシン(Docker Composeを実行しているシステム)のポート8000のすべてのリクエストは、Nginxが実行されているポート80のwebコンテナにリダイレクトされます。

ボリュームディレクティブは、ホストマシンとコンテナ間で共有ボリュームを作成します。これにより、ローカルのアプリフォルダがコンテナと共有され、そのボリュームはコンテナ内の/usr/share/nginx/htmlに配置されます。そして、これによりNginxのデフォルトのドキュメントルートが上書きされます。

ファイルを保存して閉じる。

デモページとdocker-compose.ymlファイルをセットアップして、それを提供するためにコンテナ化されたウェブサーバー環境を作成しました。次のステップでは、Docker Composeでこの環境を起動します。

ステップ3 — Docker Composeを実行する

docker-compose.ymlファイルを用意している状態で、Docker Composeを実行することで環境を立ち上げることができます。以下のコマンドは必要なDockerイメージをダウンロードし、Webサービス用のコンテナを作成し、コンテナ化された環境をバックグラウンドモードで実行します。

  1. docker compose up -d

 

Docker Composeは、まず指定されたイメージをローカルシステムで探し、イメージが見つからない場合はDocker Hubからイメージをダウンロードします。次のような出力が表示されます。

Output

Creating network “compose-demo_default” with the default driver Pulling web (nginx:alpine)… alpine: Pulling from library/nginx cbdbe7a5bc2a: Pull complete 10c113fb0c77: Pull complete 9ba64393807b: Pull complete c829a9c40ab2: Pull complete 61d685417b2f: Pull complete Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 … done

Note

注意:Dockerソケットに関する許可エラーが発生した場合は、Rocky Linux 8にDockerをインストールおよび使用する方法のステップ2をスキップしたことを意味します。そのステップに戻って完了させることで、sudoなしでdockerコマンドを実行するための許可が有効になります。

現在、環境はバックグラウンドで起動しています。コンテナがアクティブであることを確認するために、次のコマンドを実行できます。

  1. docker compose ps

 

このコマンドは、実行中のコンテナとその状態に関する情報、また現在設定されているポートのリダイレクションに関する情報を表示します。

Output

Name Command State Ports ———————————————————————————- compose-demo_web_1 /docker-entrypoint.sh ngin … Up 0.0.0.0:8000->80/tcp

このデモアプリケーションには、ローカルマシンで実行している場合はlocalhost:8000、またはリモートサーバーで実行している場合はyour_server_domain_or_IP:8000のいずれかをブラウザで指定することでアクセスできるようになりました。

このようなページが表示されます。

Docker Compose Demo Page

docker-compose.ymlファイル内で設定した共有ボリュームにより、アプリのフォルダ内のファイルがコンテナのドキュメントルートと同期されます。index.htmlファイルに変更を加えると、コンテナが自動的にそれを認識し、ページをリロードするとブラウザに反映されます。

次のステップでは、Docker Composeコマンドを使用して、コンテナ化された環境を管理する方法を見ていきます。

ステップ4 – Docker Composeコマンドの習熟

Docker Composeの設定方法とdocker compose upを使って環境を立ち上げる方法は既にご覧になったでしょう。今度は、Docker Composeコマンドを使用してコンテナ化された環境を管理および操作する方法を見ていきます。

Nginxコンテナで生成されたログを確認するには、logsコマンドを使用できます。

  1. docker compose logs

 

このような出力が表示されます。

Output

Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up web_1 | 172.22.0.1 – – [02/Jun/2020:10:47:13 +0000] “GET / HTTP/1.1” 200 353 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36” “-”

環境の実行を一時停止したい場合、現在のコンテナの状態を変更せずに行うことができます。

  1. docker compose pause

 

Output

Pausing compose-demo_web_1 … done

一時停止を発行した後、実行を再開するには:- 一時停止を発行した後、実行を再開する方法:

  1. docker compose unpause

 

Output

Unpausing compose-demo_web_1 … done

停止コマンドはコンテナの実行を終了させますが、コンテナに関連するデータは破棄されません。

  1. docker compose stop

 

Output

Stopping compose-demo_web_1 … done

このコンテナ環境に関連するコンテナ、ネットワーク、およびボリュームを削除する場合は、ダウンコマンドを使用してください。

  1. docker compose down

 

Output

Removing compose-demo_web_1 … done Removing network compose-demo_default

docker-composeで環境を立ち上げる際に使用されるベースイメージ(例:nginx:alpine)は削除されないことに注意してください。そのため、docker compose upで環境を再度立ち上げる際には、イメージが既にシステム上にあるため、プロセスがはるかに高速になります。

もしシステムからベースイメージも削除したい場合は、次のように使用することができます。

  1. docker image rm nginx:alpine

 

Output

Untagged: nginx:alpine Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912 Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270 Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1 Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157 Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6 Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08 Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Note

注意: Dockerのコマンドに関するより詳細な参照については、弊社のDockerのインストールと使用方法ガイドをご覧ください。

結論

このガイドでは、Docker Composeのインストール方法と、Nginxウェブサーバーイメージを基にしたコンテナ環境のセットアップ方法を紹介しました。また、Composeコマンドを使用してこの環境を管理する方法も学びました。

すべての利用可能なDocker Composeコマンドの完全なリファレンスについては、公式ドキュメントをチェックしてください。

コメントを残す 0

Your email address will not be published. Required fields are marked *