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とは何ですか、またどのように使用しますか?