GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

DockerComposeを使用するためのクイックガイド

Docker Composeは、Dockerとネイティブに統合するツールであり、マルチコンテナーアプリケーションの管理を簡単にします。

Docker Composeが提供するメリットは数多くあり、その一部には次のものが含まれます。

  1. コンテナネットワークを簡単に管理: Dockerネットワークを介した2つのコンテナーの接続は、Docker Composeでは非常に簡単で、ネットワークを定義してコンテナーに接続するように指示するのと同じくらい簡単です。さらに、Docker Composeは、コンテナー自体を作成および破棄するときに、ネットワークを自動的に作成および破棄できます。
  2. コンテナの依存関係: データベースなど、別のDockerコンテナを稼働させる必要があるDockerコンテナがあります。 Docker Composeを使用すると、コンテナの依存関係を定義できます。他の何かを開始する前に、依存関係が稼働している必要があります。
  3. 再現可能なセットアップ: コンテナのセットアップは、何かが作成される前に定義されるため、セットアップの再現性が可能になり、他のシステムへの転送が容易になります。理論的には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をインストールするのにもう少し努力が必要な場合があります。

その他のディストリビューションについては、必要なパッケージの入手方法について、インストールドキュメントをいつでも確認できます。

最初のDocker作成ファイルの作成 このガイドは、DockerCLIツールに既に精通していて快適であることを前提としています。そうでない場合は、そうすることを検討してください。そうしないと、単純な問題が発生する可能性があります。

DockerComposeファイルはdocker-compose.ymlという名前で保存されます 、docker-composeを実行すると自動的に検出されます 同じディレクトリ内のコマンド。その構文は、ご想像のとおり、YAMLの形式を取ります。

興味がある場合は、YAMLの基本に関する専用のチュートリアルがあります。

YAMLの基本すべてのDevOpsエンジニアが知っておくべきことDevOpsエンジニアとして、あなたはYAMLファイルをたくさん扱うことになります。基本的なYAML構文を理解することは常に良い考えです。 LinuxハンドブックRakeshJain

Nextcloudインスタンスを作成するファイルから始めて、実際にどのように実行されたかを確認します。

まず最初に、作成ファイルを作成する必要があります。システムに空のディレクトリを作成し、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ファイルを介してコンテナを配布するときに人々が何をしているのかを理解するための道を進んでいます。

何かが機能していない、またはいくつかの長引く質問がありますか?下記のコメント欄にご記入ください。


Docker
  1. DockerコンテナでNginxを実行する方法:ステップバイステップガイド

  2. DockerComposeの使用方法

  3. Docker Composev2の新機能

  1. Dockerを使用してRedisでNextcloudをセットアップする

  2. Ansibleを使用してDockerにWordPressをデプロイする

  3. DockerComposeでのホスト名の設定

  1. DockerでのPostgreSQLの実行、クイックで実用的なガイド

  2. Ansibleを使用してDockerにNextcloudをデプロイする

  3. CentOSにDockerをインストールする方法