Docker Composeは、サーバー上に複数のDockerコンテナーを簡単にデプロイするのに役立つシンプルなPythonプログラムです。
サービスの説明に単純なYAMLファイルを使用します。
長いdocker run . . .
行、あなたはただdocker-compose up -d
を使うことができます 一度に複数のサービスを展開します。
このチュートリアルでは、CentOSサーバーにDockerComposeをインストールする方法を紹介します。また、DockerComposeを使用して特定の構成でNGINXサーバーをデプロイする簡単な例も示します。
CentOSにdocker-composeをインストールする
事前にDockerをインストールしておく必要があります。 Docker Composeをインストールする前に、CentOSシステムにDockerをインストールしてください。
docker-composeは、CentOSの公式リポジトリにもdockerのrpmリポジトリにもパッケージ化されていません。
LinuxにDockerComposeをインストールするには、次の2つの方法があります。
- Docker Compose Linuxインストーラーファイルをダウンロードして、手動で設定します
- PIPを使用してDockerComposeを簡単にインストールする
個人的には、PIPを使用してDockerComposeをインストールすることを好みます。 Docker Composeは基本的にPythonアプリケーションであるため、PIPを使用してインストールするのが理にかなっています。
方法を見てみましょう。
pip3をインストール
次のコマンドを使用してpip3をインストールします。
sudo dnf install python3-pip
docker-composeをpip3を使用してインストール
pipを使用してdocker-composeをインストールします
pip3 install --user docker-compose
pipはdocker-composeを~/.local/bin
にインストールします ディレクトリ。どこからでも実行できるように、PATH環境変数に追加する必要があります:
echo 'PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
zsh
を使用している場合 、.bashrc
を変更します .zshrc
へ 。
完了したら、ソースコマンドsource ~/.bashrc
を使用します または、ターミナルを再度開きます(サーバーの場合は、ログアウトしてから再度ログインします)。
次のコマンドを使用して、docker-composeがインストールされていることを確認します。
[email protected]:~$ docker-compose --version
docker-compose version 1.26.2, build unknown
おめでとう!これで、CentOS8サーバーにdocker-composeがインストールされました。
それをテストしてみませんか?この簡単なチュートリアルに従って、DockerComposeの使用方法を学びます。
docker-composeを使用してサンプルnginxサーバーをデプロイします
Nginxは最も人気のあるWebサーバーの1つであり、Dockerを介して簡単にデプロイできます。
作成方法と非作成方法を比較してみましょう
DockerComposeを使用せずにNginxをデプロイする
run
を使用できます 次のようにnginxサーバーを簡単にデプロイするコマンド:
docker run --name server --network net -v html:/usr/share/nginx/html -v $PWD/custom-config.conf:/etc/nginx/nginx.conf -p 80:80 --restart on-failure -d nginx:latest
ここでは、外部ネットワーク「net」を使用してコンテナ名「server」のnginxサーバーをデプロイし、カスタム構成ファイルを使用して「html」という名前のボリュームをマウントし、ホストのポート80でリッスンします。失敗すると自動的に再起動します。
ここで問題を調べてみましょう:
事前にネットワークとボリュームを作成する必要があります
Dockerはネットワークとボリュームを自動的に作成しません。事前に作成する必要があります。
毎回書くにはオプションが多すぎる
書くにはあまりにも多くのオプションがあります。データベースコンテナ、リバースプロキシコンテナ、nextcloudコンテナなど、より複雑なコンテナの場合、これらのオプションは大きくなります。
開発環境
ビルドをテストしていて、コンテナーを停止した後にボリュームを保持したくない場合はどうなりますか?その後、ボリュームとネットワークを手動で削除する必要があります。
DockerComposeを使用したNginxのデプロイ
まず、作成ファイルを作成する必要があります。
「nginx-compose」という名前のディレクトリを作成し、そこにcdします:
mkdir nginx-compose && cd nginx-compose
「docker-compose.yml」という名前のファイルを作成し、次の行を追加します
version: "3.3"
services:
server:
image : "nginx:latest"
container_name: "server"
volumes:
- "html:/usr/share/nginx/html"
- "./custom-config.conf:/etc/nginx/nginx.conf"
networks:
- "net"
ports:
- "80:80"
restart: "on-failure"
volumes:
html:
networks:
net:
この作成ファイルは、server
という名前のサービスについて説明しています。 、これにより、非構成方法で行ったのとまったく同じ構成でnginxサーバーがデプロイされます。以下を使用してデプロイします:
docker-compose up -d
docker-composeは、現在のディレクトリで「docker-compose.yml」という名前のファイルを探し、それを解析して、そこに定義されているサービスをデプロイします。
ここで、composeメソッドを使用して非composeメソッドの問題を確認しましょう:
- 事前にネットワークとボリュームを作成する必要はありません。docker-composeが自動的に作成します。各ボリューム/ネットワークでexternalをtrueに設定することで、外部ボリュームを追加できます。
- .yamlファイルを作成したら、大量のコマンドを書き留める必要はありません。このファイルは、docker-composeの最新バージョンがインストールされている他のサーバーにコピーでき、期待どおりに簡単に実行できます。
-
docker-compose down -v
を使用できます コンテナだけでなく、docker-composeが作成したすべてのネットワークとボリュームも停止および削除するコマンド。これは、開発/テスト環境でのクリーンアップに役立ちます。
docker-compose over docker run
を使用することには、他にも多くの利点があります。 、特に本番環境では、今日の記事の範囲外です。
そのようなものを見たい場合は、下のコメントセクションで私に知らせてください。このようなその他のガイドについては、Dockerシリーズに注目してください。