Docker を使用する

ビデオチュートリアルを再生

:この機能は、Windows Server 2008 で実行している Plesk ではサポートされません。

Docker は開発者およびシステム管理者向けの分散アプリケーション用プラットフォームであり、コンテナ内でアプリケーションを実行できます。特定のソフトウェア(Redis、MongoDB など)や特定のソフトウェアバージョンを、OS でサポートされないものやコンパイルが必要なものを含めて使用できるようになります。

Docker は Plesk 拡張として使用できます。Plesk によって、特定の Docker イメージをベースに作成したコンテナを実行・管理することや、Docker をローカルホスト上のみならず指定したリモートマシン上でも使用することができます。

 

この章の内容:

要件と制約事項

Docker の使用を開始するには

イメージカタログ

Container Settings

コンテナを操作する

リモート Docker を使用する

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

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

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

 

要件と制約事項

  • Plesk は CentOS 7、RedHat 7、Debian 8、Ubuntu 14.04、Ubuntu 16.04 で Docker に対応します。

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

  • Plesk でリモート Docker サービスを使用するには、追加のライセンスが必要になります。単独で購入することも、ホスティングパックの一部として購入することもできます。
  • Docker は x64 システム上でのみ機能します。
  • Plesk 上の Docker コンテナを移行またはバックアップすることはできません。ただし、コンテナで使用されるデータをバックアップするか(後述の「ボリュームマッピング」を参照)、スナップショットをダウンロードすることはできます。
  • Virtuozzo 7 は Update 1 Hotfix 1(7.0.1-686)以降がインストールされている場合にサポートされます。このアップデートから、CentOS 7 をベースにした新しいコンテナはデフォルトでファイアウォールが有効になった状態で作成されます。これは Virtuozzo でセキュリティが強化されているためです。Plesk 管理者は、Plesk の動作に必要なポートを開放しておくために、ファイアウォールを手動で構成する必要があります。

  

 

Docker の使用を開始するには

Plesk に Docker 拡張をインストールします。

Docker の使用を開始するには、左側のナビゲーションパネルから[Docker]に移動します。

 

イメージカタログ

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

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

Docker_Containers

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

  1. 検索ボックスの横の矢印 arrow をクリックします。
  2. イメージ名とリポジトリを両方あるいは片方のみ指定します。

    選択できるリポジトリ:

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

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

  1. [Docker]>[Docker イメージカタログ]にアクセスします。
  2. 検索ボックスまたはフィルタを使用して、カタログ内のアプリケーションを簡単に探すことができます。
  3. アプリケーションの説明やマニュアルを Docker Hub で参照するには、イメージ名をクリックします。ローカルイメージはこの対象となりません。
  4. 特定のバージョンを実行するには、[実行]ボタンの横の矢印をクリックし、アプリケーションバージョンを選択します。
  5. 選択したアプリケーションの最新バージョンを実行するには、[実行]をクリックします。

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

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

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

    Docker_Container_displayed

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

  

 

Container Settings

Note: If you want to change container settings, you do not need to stop the container: When you save new settings, Plesk recreates the container.

To edit container settings, go to Settings or Details > Settings.

Docker_container_settings

Limiting memory

By default, using RAM in a Docker container is unlimited. To limit using RAM, clear the Unlimited checkbox and enter the limit value in megabytes in the Memory limit field.

Note: CPU and Disk usage cannot be limited for a Docker container at the moment.

Note: Docker containers are administrator-level objects, and are not controlled by subscription-level cgroup limits (CPU, RAM, Disk usage).

Automatic Start

If the option Automatic start after system reboot is not selected, then after system reboot the websites that use this container might be down and you will need to start the container manually.

Port Mapping

By default, Automatic port mapping is turned on and the container's internal port is mapped to a random port on the host system (for example, 32768).

To change the port on the host system, clear the option Automatic port mapping and specify another external port in Manual mapping. If no Manual mapping appears when you clear the check box, it means that the container does not expose ports.

Important: If port mapping is configured, Docker binds to the specified port on all network interfaces of the host system. Usually, this means that the application can be accessed from anywhere. Docker presumes that authentication is carried out by the application itself, but sometimes it is not so (for example, MySQL does not allow anonymous access by default, but redis does).
Plesk cannot determine what service is installed in a specific Docker container, and cannot control access to it. If you need to prohibit access to the application from outside Plesk, do it manually using the firewall on the host system.

Volume Mapping

Docker volumes are directories on your server mounted to a Docker container, so that you have persistent storage that can be accessed from your host system. The data in Docker volumes can be backed up, and, more importantly, it is not deleted when you stop or delete a container.

For more information about data in containers, refer to the Docker documentation.

To add a volume mapping, specify the following:

  • In the first (left) box - the path to the directory on the server that you want to mount in the container.
  • In the second (right) box (marked as Source) - the path to a directory inside the container.

To map more directories, click Add Mapping.

Setting Environment Variables

Environment variables are used by the application inside a container. You might need to add more variables or edit existing variables. Plesk allows you to add as many variables as required. 

 

コンテナを操作する

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

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

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

  • ログおよびリソース使用量を参照する([詳細])。
  • 環境変数やボリュームマッピングなどのコンテナ設定を変更する([設定]または[詳細]>[設定])。

    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 サービスの使用を開始するには、[アクティブに設定]をオンにしておきます。

左側のナビゲーションパネルに Docker へのリンクが表示されます。

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

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

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

set_active

  

 

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

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

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

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

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

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

 

 

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

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

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

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

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

local_image

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

  1. [Docker]>[Docker イメージカタログ]にアクセスします。
  2. すべてのローカルイメージを表示するには、検索ボックスの横の矢印をクリックし、[リポジトリ]フィルタで[ローカル]を選択します。
  3. 特定の製品のローカルイメージをすべて表示するには、製品名の下のリンクをクリックします。すべてのローカルイメージのタグと占有しているディスクスペースが表示されます。

    remove_images

  4. すべてのイメージを削除するには、[すべてのイメージを消去]をクリックします。
  5. 特定のイメージを削除するには、削除したいイメージの横にある削除 docker_icon_remove アイコンをクリックします。

  

 

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

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

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

要件

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

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

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

  • 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 コンテナにボリュームとしてマウントされる場合は例外となります。この場合、コンテナ内のすべてのファイルが、ウェブサイトによるディスクスペース使用量に加算されます。

 

Leave your feedback on this topic here

If you have questions or need support, please visit the Plesk forum or contact your hosting provider.
The comments below are for feedback on the documentation only. No timely answers or help will be provided.