概要: Docker is a platform used to run applications in containers. It enables you to use specific software, such as Redis or MongoDB, or a specific version of software, which might not be supported by your operating system or might need compiling.

Docker is available as a Plesk extension. With it, you can run and manage containers based on specific Docker images, and to use Docker both on the local host and on remote servers.

In this topic, you will learn how to create, configure, and manage Docker containers in Plesk. You will also learn how to control remote Docker hosts from Plesk.

要件と制約事項

警告: Docker 拡張では、Docker Hub からイメージをそのままダウンロードします。いかなる方法でも事前構成は行いません。一部の Docker コンテナやその中のソフトウェアは、信頼できる環境での使用のみを想定しているため、追加のセキュリティ設定が必要になる可能性があります。これらのイメージをダウンロードして Plesk で起動する前に、ご自身でセキュリティを強化する必要があります。具体的な手順については、コンテナやソフトウェアベンダーのマニュアルを参照してください。たとえば、 Redis ドキュメントのセキュリティセクションを参照してください

  • Plesk は次のオペレーティングシステムで Docker に対応します:CentOS 7、Red Hat Enterprise Linux 7、Debian 10、Debian 11、Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04、AlmaLinux 8.x、Rocky Linux 8.x、Virtuozzo 7 Update 1 Hotfix 1 (7.0.1-686) 以降。

    Plesk for Windows の場合、リモートマシンにインストールした Docker を使用できます(このセクションで後述する「**リモート Docker を使用する**」を参照してください)。

  • Docker コンテナにデプロイされた Plesk では Docker を使用できません。

  • To use remote Docker services in Plesk, you need an additional license. It can be purchased either separately or as a part of the Hosting Pack, Power Pack, or Developer Pack.

  • Docker は x64 システム上でのみ機能します。

  • Plesk 上の Docker コンテナを移行またはバックアップすることはできません。ただし、コンテナで使用されるデータをバックアップするか(後述の「ボリュームマッピング」を参照)、スナップショットをダウンロードすることはできます。

  • Virtuozzo 7 は Update 1 Hotfix 1(7.0.1-686) 以降がインストールされている場合にサポートされます。このアップデートから、CentOS 7 をベースにした新しいコンテナはデフォルトでファイアウォールが有効になった状態で作成されます。これは Virtuozzo でセキュリティが強化されているためです。Plesk 管理者は、Plesk の動作に必要なポートを開放しておくために、ファイアウォールを手動で構成する必要があります。

前提条件

Before you can start using Docker, the Docker extension must be installed on the Plesk server:

Once the extension is installed, you are ready to begin. You will see the Docker option in the Navigation Pane.

image docker menu

イメージカタログ

カタログ([Docker] > [Docker イメージカタログ])に、https://hub.docker.com/explore からのイメージが表示されます。デフォルトで、推奨されるイメージのみが表示されます。それ以外のイメージを表示するには、検索ボックスまたはフィルタを使用します。

アプリケーションごとに複数のバージョンを使用できます。以下のように、適切なタグを選択することで特定のバージョンを実行できます。

image docker catalog

フィルタを使用するには:

  1. 検索ボックスの横の矢印 image down arrow をクリックします。

  2. イメージ名とリポジトリを両方あるいは片方のみ指定します。

    選択できるリポジトリ:

    • ローカルリポジトリ - ローカルイメージが含まれる。これらのイメージは、既にダウンロードされ、Docker のサーバに保存されています。詳しくは、このセクションで後述する「ローカルイメージを管理する」を参照してください。
    • Docker Hub - https://hub.docker.com/explore

コンテナを実行するには:

  1. [Docker] > [Docker イメージカタログ]にアクセスします。

  2. 検索ボックスまたはフィルタを使用して、カタログ内のアプリケーションを簡単に探すことができます。

  3. アプリケーションの説明やマニュアルを Docker Hub で参照するには、イメージ名をクリックします。ローカルイメージはこの対象となりません。

  4. 特定のバージョンを実行するには、[実行]ボタンの横の矢印をクリックし、アプリケーションバージョンを選択します。

  5. 選択したアプリケーションの最新バージョンを実行するには、[実行]をクリックします。

    イメージがローカル保存されている場合、[実行(ローカル)]というボタンになります。

    Plesk はコンテナを作成して、環境変数などの設定を指定するようユーザに要求してから、コンテナを実行します。[設定]画面で[キャンセル]をクリックすると、実行をキャンセルできます。設定について詳しくは、後ほど説明する「コンテナ設定」を参照してください。

  6. [Docker カタログ]ページ上部のコンテナリストにコンテナが表示されます。

    image docker container running

コンテナを正常に実行するために必要な設定については、ログを参照してください([ログ])。

コンテナ設定

注釈: コンテナ設定を変更したい場合、コンテナを停止する必要はありません。新しい設定を保存すると、Plesk がコンテナを再作成します。

コンテナ設定を編集するには、[設定]または[詳細] > [設定]にアクセスします。

image container settings

メモリを制限する

デフォルトで、Docker コンテナでの RAM の使用は無制限です。RAM の使用を制限するには、[無制限]チェックボックスをオフにして、[メモリ上限]フィールドにメガバイト単位で上限値を入力します。

注釈: 現時点では、Docker コンテナで CPU とディスク使用量を制限することはできません。

注釈: Docker コンテナは管理者レベルのオブジェクトであり、契約レベルの cgroup 制限(CPU、RAM、ディスク使用量)ではコントロールされません。

自動的に起動

オプション[システムの再起動後に自動的に起動]をオンにしないと、システムの再起動後、このコンテナを使用するウェブサイトがダウンして、コンテナを手動で起動しなければならなくなります。

ポートマッピング

[自動ポートマッピング]はデフォルトでオンになっており、コンテナの内部ポートはホストシステムの任意のポートに無作為にマッピングされます(例:32768)。

ホストシステムでポートを変更するには、オプション[自動ポートマッピング]をクリアして、[手動マッピング]に別の外部ポートを指定します。チェックボックスをクリアしても[手動マッピング]が表示されない場合、コンテナがポートを露出(expose)していないことを意味します。

When using manual mapping, by default Docker only binds to the specified port on the host system's localhost interface (127.0.0.1). This way, the port is inaccessible from the Internet, and the application inside the container is safe from attacks. To have Docker bind to the specified port on all network interfaces of the host system, clear the "a private port on the host" checkbox. If you do, the application inside the container becomes accessible from the Internet, and can be reached on the specified port via any of the host system's IP addresses.

警告: Docker presumes that authentication is carried out by the application itself, but sometimes it is not so (for example, MySQL/MariaDB does not allow anonymous access by default, but redis does). Making the application inside a container accessible from the Internet may result in the application being attacked by a malicious actor.

ボリュームマッピング

Docker ボリュームとは、サーバ上のディレクトリを Docker コンテナにマウントしたもので、ホストシステムからアクセス可能な永続的なストレージを使用できるようになります。Docker ボリュームはバックアップ可能であり、さらに重要なのは、コンテナを停止または削除しても削除されないということです。

コンテナ内のデータについて詳しくは、Docker のドキュメントを参照してください。

ボリュームマッピングを追加するには、以下を指定します。

  • 左の「Destination」フィールドに、コンテナ内のディレクトリの絶対パスを指定します。
  • 右の「Source」フィールドに、コンテナにマウントしたいサーバ上のディレクトリの絶対パスを指定します。

追加のディレクトリをマッピングするには、[マッピングを追加]をクリックします。

環境変数を設定する

環境変数はコンテナ内のアプリケーションによって使用されます。場合によっては、変数の追加や既存の変数の編集が必要になります。Plesk では、変数を必要な数だけ追加することができます。

コンテナを操作する

コンテナに対して以下の操作を実行できます。

  • コンテナを再起動([再起動])または停止([停止])する。この場合、コンテナは現在の設定で再作成されます。

    注釈: マウントされたボリュームにデータを保存しなかった場合(後述の「ボリュームマッピング」セクションを参照)、それらのデータは失われます。

  • ログおよびリソース使用状況を参照する([詳細])。

  • 環境変数やボリュームマッピングなどのコンテナ設定を変更する([設定]または[詳細] > [設定])。

    CentOS 上の Plesk では、コンテナにメモリ上限を設定できます([設定] > [メモリ上限])。

  • コンテナを名称変更する([設定] > [コンテナ名])。

  • 同じバージョンまたは別のバージョンのイメージを使用してコンテナを再作成する([詳細] > [再作成])。

  • カスタム設定のコンテナをベースにイメージを作成する([詳細] > [イメージとして保存])。

  • コンテナのスナップショットを作成する([詳細] > [スナップショットをダウンロード])。

  • コンテナを削除する([削除]または[詳細] > [削除])。

コンテナを再作成する

通常、アプリケーションを新しいバージョンに更新したい場合には、コンテナの再作成が必要になります。カタログで提供されているあらゆるアプリケーションバージョンを使用してコンテナを再構築できます。

カスタム設定は、再作成中も保持されます。コンテナ内のアプリケーションで使用されるデータを保持するには、コンテナを再作成する前にボリュームマッピングを指定する必要があります。ボリュームマッピングによって、コンテナ内で使用されるディレクトリへのアクセスが可能になります(「コンテナ設定」の「ボリュームマッピング」を参照してください)。

コンテナを再作成するには:

  1. [Docker]にアクセスし、再作成したいコンテナの下で[詳細]をクリックします。
  2. コンテナ設定で[再作成]をクリックし、イメージバージョンと、デフォルト環境変数を使用するかどうかを指定します。

リモート Docker を使用する

デフォルトで、Plesk は Plesk コンポーネントとしてインストールされた Docker を使用しますが、Plesk の外部にインストールされた 1 つ以上の Docker サービスを使用することもできます。ただし、一度に使用できるサーバは 1 つだけです。選択されたサーバのホスト名が、Plesk の Docker カタログのタイトルに表示されます。

注釈: リモートの Docker サービスを管理するには、Plesk ライセンスキーのアドオンが必要になります。このアドオンがないと、Plesk サーバで実行されているローカルの Docker サービスしか管理できません。

リモートサービスを構成する

Docker のマニュアル の説明に従って Docker を実行するリモートサーバを構成し、Plesk でリモートサーバとして使用します。

リモートサービスを管理する

以下の手順は、Plesk for Linux と Plesk for Windows の両方が対象となります。

リモートホスト上の Docker を使い始めるには:

  1. [ツールと設定] > [Docker][サーバ管理]の下)にアクセスします。
  2. [サーバを追加]をクリックし、Docker のあるリモートサーバの設定を指定します。
  3. Plesk でこの Docker サービスの使用を開始するには、[アクティブに設定]をオンにしておきます。

The link to Docker will appear in the Navigation Pane.

Docker サービスを切り替えるには:

  1. [ツールと設定] > [Docker][サーバ管理]の下)にアクセスします。
  2. サーバのリストで、使用したいサーバを選択し、[アクティブに設定]をクリックします。

あるいは、サーバの設定を編集する時に、アクティブとして設定できます。

image remote docker hosts

カスタム設定でイメージを作成する

コンテナに加えた変更をベースに新しいイメージを作成したい場合、[イメージとして保存]を使用します。これにより、コンテナのスナップショットが作成され、イメージカタログに新しいイメージとして表示されます。このようにして、環境変数などのカスタム設定でイメージを作成することができます。

自分のコンテナからイメージを作成するには:

[Docker] > コンテナ名の下の[詳細] > [イメージとして保存]の順に選択し、オプションで以下を指定します。

  • イメージ名。デフォルトで ID が生成され、名前として使用されます。
  • タグ。イメージバージョンを指定できます。デフォルトのバージョンは「latest」です。

作成されたイメージはイメージカタログに表示され、「ローカルイメージ」と表記されます。

ローカルイメージを管理する

ローカルイメージとは、Docker によってローカルディスクに保存されるイメージであり、イメージカタログからダウンロードする必要はありません。

イメージは以下のような場合にローカルになります。

  • イメージの任意のバージョン(タグ)を選択し、イメージのダウンロードが始まった。その後、コンテナを実行するか、実行をキャンセル([設定]画面)すると、イメージはローカル保存される。
  • Plesk の Docker カタログにイメージをアップロードする(Docker イメージカタログの[イメージをアップロード])。
  • コンテナからカスタムイメージを作成した(「カスタム設定でイメージを作成する」を参照)。
  • コマンドラインインターフェースを使用してイメージをビルドした。

Docker で、あるイメージに属するバージョン群から少なくとも 1 つのバージョンがダウンロードされている場合、このイメージはカタログで「ローカルイメージ」と表記されます。「実行(ローカル)」と表記される場合、最新バージョンが既にダウンロードされていることを意味します。また、ある製品に存在するローカルイメージの数も表示されます。

image docker local images

ローカルイメージを表示し、古くなったローカルイメージを削除するには:

  1. [Docker] > [Docker イメージカタログ]にアクセスします。

  2. すべてのローカルイメージを表示するには、検索ボックスの横の矢印をクリックし、[リポジトリ]フィルタで[ローカル]を選択します。

  3. 特定の製品のローカルイメージをすべて表示するには、製品名の下のリンクをクリックします。すべてのローカルイメージのタグと占有しているディスクスペースが表示されます。

    image remove outdated images

  4. すべてのイメージを削除するには、[すべてのイメージを消去]をクリックします。

  5. 特定のイメージを削除するには、削除したいイメージの横にある削除 image red cross アイコンをクリックします。

ドメインからコンテナへプロキシリクエストを送るように nginx をセットアップする

一部の Docker コンテナはポートを露出するため、コンテナ内のアプリケーションにこれらのポートを経由してアクセスできます。

ウェブサイトで Docker コンテナ内のアプリケーションを使用するときに、URL に標準ではないポートを指定するのは都合が悪い可能性があります。回避策として、ドメインからこのポートへプロキシリクエストを送るように nginx をセットアップすることができます。ドメインは標準ポート(80 など)を使用でき、URL にポートを明示的に指定する必要がありません。

要件

  • Plesk で nginx が実行されている必要があります。
  • コンテナ内のポートをホストシステムのポート(たとえば 32768)に手動でマッピングする必要があります(Docker > コンテナを選択 > [設定] > [自動ポートマッピング]オプションをクリア)。

システムの任意のポート(32768 など)にコンテナ内のポートを手動でマッピングした後で、nginx がドメインからこのポートへプロキシリクエストを送るようにセットアップすることができます。これにより、ドメインが nginx で標準ポート(80 など)を使用できるようになります。これには、以下の方法でドメイン設定に nginx 用のルールを追加します。

[ウェブサイトとドメイン] > ドメイン > [Docker プロキシルール] > [ルールを追加]に移動して、以下を指定します。

  • URL:コンテナ内で実行されるアプリケーションを使用するウェブサイトの URL を指定します。メインウェブサイトまたはその一部にできます。
  • コンテナ:Docker コンテナとして実行されるアプリケーションを選択します。
  • ポート:コンテナ設定で指定したマッピングを 1 つ選択します(コンテナ内のポートからシステムのポートへのマッピング)。nginx がシステムのポートへプロキシリクエストを送るようになります。

プロキシルールはウェブサーバの構成、たとえばウェブサイトの nginx.conf ファイル( /var/www/vhosts/system/$domain/conf/ 内)などに実装されます。

#extension docker begin
location ~ ^/.* {
    proxy_pass http://0.0.0.0:9080;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}
#extension docker end

プロキシルールは NAT 環境内のサーバで問題なく機能します。

注釈: プロキシルールでウェブサイトに接続された Docker コンテナは、契約のディスクスペース使用量に加算されません。ただし、ウェブサイトディレクトリが Docker コンテナにボリュームとしてマウントされる場合は例外となります。この場合、コンテナ内のすべてのファイルが、ウェブサイトによるディスクスペース使用量に加算されます。