Dockerは、Linuxシステムでコンテナーを構築および実行するために必要なすべてのものを提供します。コンテナは軽量仮想マシンに似ています。ホストのオペレーティングシステムカーネルを使用して実行されるポータブルアプリケーションイメージを作成できます。
Dockerは、Debian、Fedora、CentOS、およびRaspbianプラットフォームで使用できます。これらのディストリビューションの派生物も機能します。 Dockerは、サポートされているほとんどのプラットフォームにx86/x64およびARMビルドを提供します。 aptを備えたDebianシステムを使用しています このガイドのパッケージマネージャー。他のディストリビューションに固有の手順は、Dockerドキュメントにあります。
Docker Composeを使用すると、複数のコンテナーのスタックを構築して実行できます。アプリケーションのコンテナを構成するYAMLファイルを作成します。次に、1つのコマンドを使用して、すべてのコンテナーを起動し、それらをリンクすることができます。 Composeは、スタックのコンポーネントを個別のコンテナ化されたサービスに分離するのに役立ちます。
ComposeはDockerとは独立して配布されます。 Composeを追加する前にDockerをインストールします。そうしないと、Composeが機能しなくなります。
関連: Dockerを使用してPHPとApacheをコンテナ化する方法
Dockerをインストールする
オペレーティングシステムのパッケージマネージャーを使用して、最新のDockerリリースをインストールできます。 Dockerのリポジトリを追加し、パッケージリストを更新してから、Dockerをインストールする必要があります。
Debian / Ubuntu
インストールプロセスに必要な依存関係を追加することから始めます:
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
次に、DockerのリポジトリGPGキーを追加します:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
ソースにリポジトリを追加し、パッケージリストを更新します:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
これでDockerをインストールできます:
sudo apt-get install docker-ce docker-ce-cli containerd.io
Dockerのパッケージリポジトリを追加します:
sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Dockerのインストール:
sudo dnf install docker-ce docker-ce-cli containerd.io
CentOS
Dockerのパッケージリポジトリを追加します:
sudo yum -y install yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Dockerのインストール:
sudo yum install docker-ce docker-ce-cli containerd.io
SudoなしでDockerを使用する
Dockerデーモンはrootとして実行されます 。通常、Dockerコマンドの前にsudoを付ける必要があります 。 Dockerを頻繁に使用している場合、これは面倒になる可能性があります。 dockerに自分を追加する groupを使用すると、sudoなしでDockerを使用できます 。
sudo usermod -aG docker $USER
グループに参加したら、ログアウトして再度ログインします。または、newgrp dockerを実行します 更新されたグループにすぐにログインするコマンド。これで、sudoを削除できるようになります。 Dockerコマンドから。
Dockerインストールのテスト
Dockerがインストールされたので、動作をテストします。最小限のhello-worldを使用できます 画像。
docker run hello-world:latest
ターミナルに数行の出力が表示されるはずです。 Dockerは最初にhello-world:latestを探します マシン上の画像。存在しないため、イメージはDockerHubリポジトリからプルされます。
イメージがプルされると、そこから新しいコンテナが作成されます。コンテナは、基本的な「helloworld」メッセージを送信して終了するように構成されています。テキストが表示されている場合は、Dockerのインストールが機能しています!
Dockerサービスの管理
systemctlを使用してサービスを検査することで、Dockerが実行されているかどうかを確認できます。 。考慮すべき2つのコンポーネント、dockerがあります およびcontainerd 。 docker CLIがコマンドを送信するDockerEngineデーモンです。 containerd は、実際にコンテナを実行する基盤となるランタイムです。
sudo systemctl status docker.service sudo systemctl status containerd.service
システム上の他のサービスと同じようにデーモンを管理できます。 systemctl stopを使用します Dockerを一時的に停止し、コンテナーで使用されているシステムリソースを解放する場合:
sudo systemctl stop docker.service
systemctl startを使用してサービスを再起動できます 。
Docker-Composeの追加
docker-compose は別のバイナリであり、プロジェクトのGitHubリリースから直接ダウンロードするのが最適です。最も人気のあるLinuxディストリビューションでは、パッケージマネージャーにComposeが含まれていますが、かなり古くなっている可能性があります。
Docker Composeのリリースページに移動し、最新のバージョン番号をメモします。執筆時点では、1.29.0でした。 。
1.29.0の代わりに表示されているバージョンに置き換えてください 以下のコマンドで。これにより、システムに適したバイナリがダウンロードされ、/usr/local/binにドロップされます。 。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
次に、ファイルを実行可能にします:
sudo chmod +x /usr/local/bin/docker-compose
これで、docker-composeを使用できるようになります ターミナルでコマンドを実行します。 docker-compose --versionを実行してみてください 確認します。
docker-composeを使用するには docker-compose.ymlを作成する必要があります ファイル。これは、アプリケーションのスタックを構成するコンテナについて説明しています。コンテナで使用されるポートバインディング、環境変数、ネットワーク、およびボリュームを指定できます。
同じdocker-compose.ymlで宣言されたコンテナ ファイルは自動的に同じスタックの一部になります。これらはDockerネットワークにリンクされているため、docker-compose.ymlを使用して相互に通信できます。 ホスト名としてのサービス名。
これが簡単なdocker-compose.ymlです PHP WebサーバーとMySQLデータベースを実行するには:
version: "3"
services:
app:
image: php8.0-apache
environment:
- MYSQL_SERVER=mysql
- MYSQL_USERNAME=root
- MYSQL_PASSWORD=example
ports:
- ${PORT:-80}:80
restart: unless-stopped
mysql:
image: mysql:8.0
expose:
- 3306
environment:
- MYSQL_ROOT_PASSWORD
volumes:
- mysql:/var/lib/mysql
restart: unless-stopped
volumes:
mysql:
docker-compose up -dを実行すると、両方のサービスを起動できます。 。両方のイメージがDockerHubからプルされていることがわかります。その後、コンテナが起動します。 docker-compose stopを使用して両方を停止できます 。 docker-compose downを使用します コンテナを削除します。
サンプルのYAMLファイルは、いくつかのDockerCompose機能を示しています。コンテナはservicesの下で定義されます ノード。各コンテナはDockerimageを宣言します。 。シェル環境変数をコンテナに渡すことができます(environments )およびDockerポートバインドのセットアップ(ports )。 ${VARIABLE:-DEFAULT}を使用して、環境変数を文字列に補間できます。 構文。変数がシェルに設定されていない場合は、DEFAULT 代わりに値として使用されます。 Docker Composeの詳細については、専用ガイドをご覧ください。
一般的なLinuxディストリビューションのパッケージマネージャーを使用して、Dockerを簡単にインストールできます。 Dockerリポジトリを追加してから、docker-ceをインストールします 、docker-ce-cli およびcontainerd.io 。これらのコンポーネントは、コンテナを構築して実行するために必要なすべてのものを提供します。
稼働状態になったら、Dockerfileを記述できます。 docker build -t my-app:latest .を使用します それを構築します。次に、docker run my-app:latestを使用します コンテナを起動します。
Docker-Composeは、複数のコンテナの「スタック」を簡単に実行できるようにする追加の抽象化レイヤーです。 Composeを使用すると、複数のコマンドを手動で連続して実行する必要がありません。宣言型のYAMLファイルを記述して、docker-compose upを使用できます。 すべてのコンテナを一斉に起動します。
関連: Docker Composeとは何ですか、またどのように使用しますか?