Docker Composeは、Dockerとネイティブに統合するツールであり、マルチコンテナーアプリケーションの管理を簡単にします。
Docker Composeが提供するメリットは数多くあり、その一部には次のものが含まれます。
- コンテナネットワークを簡単に管理: Dockerネットワークを介した2つのコンテナーの接続は、Docker Composeでは非常に簡単で、ネットワークを定義してコンテナーに接続するように指示するのと同じくらい簡単です。さらに、Docker Composeは、コンテナー自体を作成および破棄するときに、ネットワークを自動的に作成および破棄できます。
- コンテナの依存関係: データベースなど、別のDockerコンテナを稼働させる必要があるDockerコンテナがあります。 Docker Composeを使用すると、コンテナの依存関係を定義できます。他の何かを開始する前に、依存関係が稼働している必要があります。
- 再現可能なセットアップ: コンテナのセットアップは、何かが作成される前に定義されるため、セットアップの再現性が可能になり、他のシステムへの転送が容易になります。理論的にはBashのようなものでそのようなことを行うことができますが、それは物事の柔軟性を低下させ、変化への適応を困難にする可能性があります。
LinuxへのDockerComposeのインストール
Docker Composeは、ほとんどのディストリビューションリポジトリですぐに利用できます。
次のコマンドを使用して、UbuntuおよびDebianベースのディストリビューションにDockerComposeをインストールできます。
sudo apt install docker-compose
ArchとManjaroでは、次を使用できます:
sudo pacman -S docker-compose
Fedoraでは、dnfコマンドを使用できます:
sudo dnf install docker-compose
CentOSにDockerComposeをインストールするのにもう少し努力が必要な場合があります。
その他のディストリビューションについては、必要なパッケージの入手方法について、インストールドキュメントをいつでも確認できます。
DockerComposeファイルはdocker-compose.yml
という名前で保存されます 、docker-compose
を実行すると自動的に検出されます 同じディレクトリ内のコマンド。その構文は、ご想像のとおり、YAMLの形式を取ります。
興味がある場合は、YAMLの基本に関する専用のチュートリアルがあります。
YAMLの基本すべてのDevOpsエンジニアが知っておくべきことDevOpsエンジニアとして、あなたはYAMLファイルをたくさん扱うことになります。基本的なYAML構文を理解することは常に良い考えです。 LinuxハンドブックRakeshJainNextcloudインスタンスを作成するファイルから始めて、実際にどのように実行されたかを確認します。
まず最初に、作成ファイルを作成する必要があります。システムに空のディレクトリを作成し、docker-compose.yml
を作成します ファイル。
次に、ファイルに次の内容を入力します。
version: '3.5'
services:
nextcloud_app:
container_name: nextcloud_app
image: nextcloud
restart: unless-stopped
networks:
- nextcloud
ports:
- 80:80
volumes:
- ./data/app:/var/www/html
depends_on:
- nextcloud_mariadb
nextcloud_mariadb:
container_name: nextcloud_mariadb
image: mariadb
restart: unless-stopped
networks:
- nextcloud
volumes:
- ./data/mariadb:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: 'mariadb'
networks:
nextcloud:
name: nextcloud_docker_network
これで、実行する必要があるのはdocker-compose up -d
だけです。 、Dockerを使用してNextcloudを正常にデプロイできたはずです。
これがNextcloudのログインページです。
Docker作成ファイルについて
ファイルが実際に機能することを確認したので、ファイルの内容を調べて、ファイルが実際に何をしているのかを実際に理解できるようにします。
version: '3.5'
まず最初に、version
鬼ごっこ。バージョンが異なれば構文も異なるため、これはDockerComposeファイル形式のバージョンを指定するだけです。通常、これを最新バージョンに維持する必要がありますが、そうである必要はありません。これは、レガシーファイルがある場合に役立ちます。
services:
nextcloud_app:
container_name: nextcloud_app
image: nextcloud
restart: unless-stopped
networks:
- nextcloud
ports:
- 80:80
volumes:
- ./data/app:/var/www/html
depends_on:
- nextcloud_mariadb
nextcloud_mariadb:
container_name: nextcloud_mariadb
image: mariadb
restart: unless-stopped
networks:
- nextcloud
volumes:
- ./data/mariadb:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: 'mariadb'
次に、services
が表示されます 鬼ごっこ。これにより、docker-compose up -d
のときに作成されるすべてのアプリケーションのリストが開始されます。 実行されます。
これに続いて、最初のコンテナnextcloud_app
のリストを開始します 。これはアプリの識別子として機能し、他のDockerComposeコマンドで使用できます。これはそうではないことに注意してください コンテナ自体の名前-次のパートで指定します。
ここで、コンテナに関するすべての定義を開始します。これがすべてのフィールドの意味のブラッシュアップですが、Dockerの使い方をすでに知っている場合は、ほとんどのフィールドが自明であるはずです。
-
container_name
-コンテナの名前を定義します。--name
と同等 オプション。 image
-コンテナのプル元の画像を定義します。restart
-コンテナの再起動ポリシーを定義します。--restart
と同等です 。networks
-コンテナが接続するネットワークを定義します。このネットワークは作成することも、すでに存在させることもできます。この値は、docker-compose
の識別子として機能します ネットワークの実際の名前ではありません(networks
で定義されています)。 タグセクション)。ports
-コンテナが接続できるホストポートを定義します。--publish
と同等 。volumes
-コンテナのボリュームを定義します。--volume
と同等 。environment
-コンテナの環境変数を定義します。--env
と同等 。このオプションは、2つの構文タイプをサポートします。 1つ目はvariable: value
、ここで使用されているものです。docker
に慣れている場合は、もう1つのオプションです。 CLI構文は、- variable=value
です。 。-
depends_on
-コンテナの依存関係を指定します。これは、依存関係が発生するまでコンテナを起動しないように要求するために使用されます。これは、コンテナリストからの値を受け入れます。 (container_name
ではありません !)
networks:
nextcloud:
name: nextcloud_docker_network
これで、networks
にアクセスできます。 鬼ごっこ。これは、networks
の下にリストしたネットワークを定義するために使用されます 私たちのコンテナのために。
networks
の内部 セクションでは、最初にservices
の下にネットワークに与えた識別子をリストします 。ここでは、それはnextcloud
でした 。
次に、docker network ls
で表示できるネットワークの名前を定義します 。ここでは、nextcloud_docker_network
という名前を付けました。 。
コンテナを既存のネットワークに参加させたい場合は、次の構文を使用して、network_name
を置き換えます。 Dockerネットワークの名前:
networks:
nextcloud:
external: true
name: network_name
そして、あなたは行きます。これでファイル全体が要約されます!
ymlファイルには任意の名前を付けることができますが、docker-composeコマンドを使用するときにファイル名を指定する必要があります。伝統を守り、docker-compose.ymlという名前を付けると、コマンドが短くなります。これで、Docker Composeを使用するための基本と、DockerComposeを使用することで得られるメリットがわかりました。また、Composeファイルを介してコンテナを配布するときに人々が何をしているのかを理解するための道を進んでいます。
何かが機能していない、またはいくつかの長引く質問がありますか?下記のコメント欄にご記入ください。