Docker を使用する
概要: Docker は、コンテナ内でアプリケーションを実行するために使用するプラットフォームです。特定のソフトウェア (Redis、MongoDB など) や特定のソフトウェアバージョンを、OS でサポートされないものやコンパイルが必要なものを含めて使用できるようになります。
Docker は Plesk 拡張として使用できます。これを使用して、特定の Docker イメージをベースにコンテナを実行・管理することや、Docker をローカルホスト上とリモートサーバの両方で使用することができます。
このトピックでは、Plesk で Docker コンテナを作成、構成、管理する方法を学習します。また、Plesk からリモート Docker ホストを制御する方法についても学習します。
要件と制約事項
警告: Docker 拡張では、Docker Hub からイメージをそのままダウンロードします。いかなる方法でも事前構成は行いません。一部の Docker コンテナやその中のソフトウェアは、信頼できる環境での使用のみを想定しているため、追加のセキュリティ設定が必要になる可能性があります。これらのイメージをダウンロードして Plesk で起動する前に、ご自身でセキュリティを強化する必要があります。具体的な手順については、コンテナやソフトウェアベンダーのマニュアルを参照してください。たとえば、 Redis ドキュメントのセキュリティセクションを参照してください。
-
Plesk は次のオペレーティングシステムで Docker に対応します: CentOS 7、Red Hat Enterprise Linux 7、Debian 10、Debian 11、Debian 12、Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04、Ubuntu 24.04、AlmaLinux 8.x、AlmaLinux 9.x、Rocky Linux 8.x、Virtuozzo 7 Update 1 Hotfix 1 (7.0.1-686) 以降。
Plesk for Windows の場合、リモートマシンにインストールした Docker を使用できます(このセクションで後述する「**リモート Docker を使用する**」を参照してください)。
-
Docker コンテナにデプロイされた Plesk では Docker を使用できません。
-
Plesk でリモート Docker サービスを使用するには、追加のライセンスが必要になります。 単独で 購入することも、Hosting Pack、Power Pack、または Developer Pack の一部として購入することもできます。
-
Docker は x64 システム上でのみ機能します。
-
Plesk 上の Docker コンテナを移行またはバックアップすることはできません。ただし、コンテナで使用されるデータをバックアップするか(後述の「ボリュームマッピング」を参照)、スナップショットをダウンロードすることはできます。
-
Virtuozzo 7 は Update 1 Hotfix 1(7.0.1-686) 以降がインストールされている場合にサポートされます。このアップデートから、CentOS 7 をベースにした新しいコンテナはデフォルトでファイアウォールが有効になった状態で作成されます。これは Virtuozzo でセキュリティが強化されているためです。Plesk 管理者は、Plesk の動作に必要なポートを開放しておくために、ファイアウォールを手動で構成する必要があります。
前提条件
Docker の使用を開始する前に、 Docker 拡張 を Plesk サーバにインストールする必要があります。
- Plesk 管理者の場合は、拡張カタログから拡張をインストールします。
- それ以外の場合は、ホスティング事業者に連絡して拡張をインストールしてもらえるか確認してください。
拡張がインストールされると、利用を開始できます。ナビゲーションペインに Docker オプションが表示されています。
コンテナ
Docker Hub からのイメージには「コンテナを実行」カタログ ([Docker] > [コンテナ] > [コンテナを実行]) でアクセスできます。
カタログにアクセスするには:
- 以前にコンテナをインストールしていない場合は、 [Docker] > [コンテナ] で [コンテナを実行] をクリックします。
- 以前にコンテナをインストールした場合は、 [Docker] > [コンテナ] でプラスアイコン
をクリックします。
利用可能な画像を表示するには、検索ボックスを使用します。
イメージ名、リポジトリ、またはその両方を指定します。
検索可能なリポジトリは次のとおりです:
- ローカルリポジトリ - ローカルイメージが含まれる。これらのイメージは、既にダウンロードされ、Docker のサーバに保存されています。詳しくは、このセクションで後述する「ローカルイメージを管理する」を参照してください。
- Docker Hub
各アプリケーションには複数のバージョンが用意されている場合があります。以下に示すように、適切なタグを選択することで、特定のバージョンを実行できます。
コンテナを実行するには:
-
[Docker] > [コンテナ] > [コンテナを実行] に移動します。
-
カタログ内の画像を検索するには、検索ボックスを使用します。画像がローカルに保存されている場合は、バージョンの後に「 (ローカル) 」と表示されます。
-
イメージの説明やドキュメントを Docker Hub で表示するには、詳細アイコン
をクリックします。ローカルイメージではこれを使用できません。
-
イメージカードをクリックします。
- 特定のバージョンを実行するには、実行するイメージバージョンを [イメージバージョン] ドロップダウンから選択し、 [次へ] をクリックします。
- 選択したアプリケーションの最新バージョンを実行するには、 [次へ] をクリックします。
Plesk はコンテナを作成して、環境変数などの設定を指定するようユーザに要求してから、コンテナを実行します。[設定]画面で[キャンセル]をクリックすると、実行をキャンセルできます。設定について詳しくは、後ほど説明する「コンテナ設定」を参照してください。
-
設定を調整したら、 [実行] をクリックします。コンテナが [コンテナ] タブのコンテナ一覧に表示されます。
コンテナが問題なく実行されているかどうかを確認するには、コンソールログを参照してください。
コンテナ設定
注釈: コンテナ設定を変更したい場合、コンテナを停止する必要はありません。新しい設定を保存すると、Plesk がコンテナを再作成します。
コンテナ設定を編集するには、 [コンテナ] タブに移動し、編集するコンテナの横にある設定アイコン をクリックします。
メモリを制限する
デフォルトで、Docker コンテナでの RAM の使用は無制限です。RAM の使用を制限するには、 [メモリ上限] チェックボックスをオンにして、上限値を [MB] フィールドにメガバイト単位で入力します。
注釈: 現時点では、Docker コンテナで CPU とディスク使用量を制限することはできません。
注釈: Docker コンテナは管理者レベルのオブジェクトであり、契約レベルの cgroup 制限(CPU、RAM、ディスク使用量)ではコントロールされません。
自動的に起動
オプション[システムの再起動後に自動的に起動]をオンにしないと、システムの再起動後、このコンテナを使用するウェブサイトがダウンして、コンテナを手動で起動しなければならなくなります。
ポートマッピング
[自動ポートマッピング]はデフォルトでオンになっており、コンテナの内部ポートはホストシステムの任意のポートに無作為にマッピングされます(例:32768)。
ホストシステムでポートを変更するには、 [自動ポートマッピング] をオフにして、 [手動マッピング] に別の外部ポートを指定します。このオプションをオフにしても [手動マッピング] が表示されない場合、コンテナがポートを公開していないことを意味します。
手動マッピングを使用する場合、デフォルトで、Docker はホストシステムの localhost インターフェース (127.0.0.1) の指定されたポートにのみバインドします。これにより、ポートはインターネットからアクセスできなくなり、コンテナ内のアプリケーションが攻撃から保護されます。Docker をホストシステムのすべてのネットワークインターフェースの指定されたポートにバインドするには、 [ポートをインターネットからアクセスできないようにする] をオフにします。こうすることで、コンテナ内のアプリケーションはインターネットからアクセス可能になり、ホストシステムの任意の IP アドレスを介して指定のポートで到達できるようになります。
警告: Docker では、認証はアプリケーション自体によって実行されるものと想定されますが、そうでない場合もあります (たとえば、MySQL/MariaDB はデフォルトで匿名アクセスを許可しませんが、Redis は許可します)。コンテナ内のアプリケーションをインターネットからアクセス可能にすると、攻撃者によってアプリケーションが攻撃されてしまう可能性があります。
ボリュームマッピング
Docker ボリュームは、Docker コンテナにマウントされたサーバ上のディレクトリです。これにより、ホストシステムからアクセスできる永続的なストレージを持つことができます。コンテナを停止または削除しても、Docker ボリューム内のデータは削除されません。
警告: Docker ボリュームに保存されたデータは Plesk バックアップには含まれません。データ損失を防ぐため、ボリュームに保存されている重要なデータはサードパーティ製のバックアップツールでバックアップしてください。
コンテナ内のデータについて詳しくは、Docker のドキュメントを参照してください。
ボリュームマッピングを追加するには、以下を指定します。
- [ホスト] フィールド - コンテナにマウントするサーバ上のディレクトリへの絶対パス。
- [コンテナ] フィールド - コンテナ内のディレクトリへの絶対パス。
追加のディレクトリをマッピングするには、 [もう 1 つ追加] をクリックします。
環境変数を設定する
環境変数はコンテナ内のアプリケーションによって使用されます。場合によっては、変数の追加や既存の変数の編集が必要になります。Plesk では、変数を必要な数だけ追加することができます。
コンテナを操作する
コンテナに対して以下の操作を実行できます。
-
コンテナを停止 ([停止])、起動 ([起動])、再起動 ([再起動]) する。これらの場合、コンテナは現在の設定で再作成されます。
注釈: マウントされたボリュームにデータを保存しなかった場合(後述の「ボリュームマッピング」セクションを参照)、それらのデータは失われます。
-
コンテナの横にある矢印
をクリックして、ログとリソース消費量を表示する。
-
コンテナの横にある設定アイコン
をクリックして、環境変数やボリューム マッピングなどのコンテナ設定を変更する (設定)。
-
コンテナを名称変更する([設定] > [コンテナ名])。
コンテナの横にあるその他のオプションアイコン をクリックして、次の 1 つ以上の操作を実行する。
- 同じバージョンまたは別のバージョンのイメージを使用してコンテナを再作成する ([再作成])。
- カスタム設定のコンテナをベースにイメージを作成する ([イメージとして保存])。
- コンテナのスナップショットを作成する([スナップショットをダウンロード])。
- コンテナを削除する ([削除])。
コンテナを再作成する
通常、アプリケーションを新しいバージョンに更新したい場合には、コンテナの再作成が必要になります。カタログで提供されているあらゆるアプリケーションバージョンを使用してコンテナを再構築できます。
カスタム設定は、再作成中も保持されます。コンテナ内のアプリケーションで使用されるデータを保持するには、コンテナを再作成する前にボリュームマッピングを指定する必要があります。ボリュームマッピングによって、コンテナ内で使用されるディレクトリへのアクセスが可能になります(「コンテナ設定」の「ボリュームマッピング」を参照してください)。
コンテナを再作成するには:
#. Go to Docker and click the more options icon next to
the container you want to recreate.
#. Click Recreate in the container settings and specify the image
version and whether to use default environment variables.
リモート Docker を使用する
Plesk はデフォルトでローカルサービスとしてインストールされた Docker を使用しますが、Plesk の外部にインストールされた 1 つ以上の Docker サービスを使用することもできます。ただし、一度に使用できるサービスは 1 つだけです。アクティブなサーバは、Plesk の [Docker 設定] ページの [環境] タブで確認できます。
注釈: リモートの Docker サービスを管理するには、Plesk ライセンスキーのアドオンが必要になります。このアドオンがないと、Plesk サーバで実行されているローカルの Docker サービスしか管理できません。
リモートサービスを構成する
Docker のマニュアル の説明に従って Docker を実行するリモートサーバを構成し、Plesk でリモートサーバとして使用します。
リモートサービスを管理する
Docker 拡張を備えた Plesk サーバと Docker サービスを備えたリモート ノードの間の接続を確立できます。
以下の手順は、Plesk for Linux と Plesk for Windows の両方が対象となります。
次の手順はリモートホストで実行する必要があります。
#. Create the /etc/docker/daemon.json
configuration file for Docker
with the following content:
1 2 3 4 5 6 7 8 |
{ "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"], "tls": true, "tlsverify": true, "tlscacert": "/root/ca.pem", "tlscert": "/root/server-cert.pem", "tlskey": "/root/server-key.pem" } |
#. Prepare .pem
files. You can use the following example. Replace the IP on
line 4 with the IP address of your remote node and run each command:
1 2 3 4 5 6 7 8 9 10 |
openssl genrsa -aes256 -out ca-key.pem 4096 openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem openssl genrsa -out server-key.pem 4096 openssl req -subj "/CN=192.0.2.1" -new -key server-key.pem -out server.csr openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem openssl genrsa -out key.pem 4096 openssl req -subj '/CN=client' -new -key key.pem -out client.csr openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem chmod 0400 ca-key.pem server-key.pem key.pem chmod 0444 ca.pem server-cert.pem cert.pem |
- 次のコマンドを実行して、現在の Docker サービスを変更し、ホスト構成後に起動するようにします。
1 2 3 4 |
cp /lib/systemd/system/docker.service /etc/systemd/system/ sed -i 's/\ -H\ fd:\/\///g' /etc/systemd/system/docker.service systemctl daemon-reload systemctl restart docker |
- クライアントがリモート接続に使用できるように、次のファイルの出力をローカルマシンに保存します。
1 2 3 |
cat key.pem cat cert.pem cat ca.pem |
ローカルサーバで Docker リモートホストを構成します。
- [Docker] > [環境] に移動します。
- [サーバを追加] をクリックし、Docker のあるリモートサーバの設定を指定します。
- Plesk でこの Docker サービスの使用を開始するには、[アクティブに設定]をオンにしておきます。
Docker へのリンクがナビゲーションペインに表示されます。
Docker サービスを切り替えるには:
- [Docker] > [環境] に移動します。
- サーバのリストで、使用する Docker ノードを選択し、 [アクティブに設定] をクリックします。
あるいは、設定を編集する際に Docker ノードをアクティブとして設定することもできます。
カスタム設定でイメージを作成する
コンテナに加えた変更をベースに新しいイメージを作成したい場合、[イメージとして保存]を使用します。これにより、コンテナのスナップショットが作成され、イメージカタログに新しいイメージとして表示されます。このようにして、環境変数などのカスタム設定でイメージを作成することができます。
自分のコンテナからイメージを作成するには:
[Docker] > [コンテナ] に移動し、コンテナの横にあるその他のオプションアイコン をクリックして、 [イメージとして保存] をクリックします。 [<container name> をイメージとして保存] サイドパネルで、以下を指定します。
- イメージ名。
- オプションのタグ。イメージバージョンを指定できます。デフォルトのバージョンは「latest」です。
作成されたイメージは [イメージ] タブに表示され、 [ローカルイメージ] と表示されます。
ローカルイメージを管理する
ローカルイメージとは、Docker によってローカルディスクに保存されるイメージであり、イメージカタログからダウンロードする必要はありません。
イメージは以下のような場合にローカルになります。
- イメージの任意のバージョン(タグ)を選択し、イメージのダウンロードが始まった。その後、コンテナを実行するか、実行をキャンセル([設定]画面)すると、イメージはローカル保存される。
- Plesk で Docker にイメージをアップロードします ([Docker イメージ] タブの [イメージをアップロード])。
- コンテナからカスタムイメージを作成した(「カスタム設定でイメージを作成する」を参照)。
- コマンドラインインターフェースを使用してイメージをビルドした。
オンラインカタログからイメージの別のバージョンをダウンロードするには、プルアイコン をクリックし、プルするバージョンをドロップダウンから選択して、 [プル] をクリックします。
Docker で、あるイメージに属するバージョン群から少なくとも 1 つのバージョンがダウンロードされている場合、このイメージはカタログで [ローカルイメージ] と表示されます。また、製品に存在するローカルイメージの数も表示されます。
ローカルイメージを表示し、古くなったローカルイメージを削除するには:
-
[Docker] > [イメージ] に移動します。
-
特定のローカルイメージを検索するには、検索バーを使用します。
-
特定の製品のローカルイメージをすべて表示するには、製品名の下のリンクをクリックします。すべてのローカルイメージのタグと占有しているディスクスペースが表示されます。
-
削除する特定のイメージを選択し、 [削除] をクリックします。
ドメインからコンテナへのリクエストをプロキシするように nginx をセットアップする
一部の Docker コンテナはポートを露出するため、コンテナ内のアプリケーションにこれらのポートを経由してアクセスできます。
ウェブサイトで Docker コンテナ内のアプリケーションを使用するときに、URL に非標準ポートを指定するのは都合が悪い可能性があります。回避策として、ドメインからこのポートへのリクエストをプロキシするように nginx をセットアップすることができます。ドメインは標準ポート (80 など) を使用でき、URL にポートを明示的に指定する必要はありません。
要件
- Plesk で nginx が実行されている必要があります。
- コンテナ内のポートをホストシステム上のポート (たとえば 32768) に手動でマッピングする必要があります。
コンテナ内のポートをマッピングするには:
-
[Docker] > [コンテナ] に移動し、編集するコンテナの横にある設定アイコン
をクリックします。
- [自動ポートマッピング] をオフにします。
- コンテナ内のポートをシステム上の特定のポート (例: 32768) に手動でマッピングします。このポートをインターネットからアクセスできないようにすることもできます。
You can set up nginx to proxy requests from domains to that port, so domains can use a standard port on nginx (for example, 80). To make this possible, add a rule for nginx in the domain settings.
ドメイン設定で 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 コンテナにボリュームとしてマウントされる場合は例外となります。この場合、コンテナ内のすべてのファイルが、ウェブサイトによるディスクスペース使用量に加算されます。
Docker Compose YAMLファイルをデプロイする
Docker Compose YAML ファイルは、オンラインテキストエディタを使用するか、ローカルストレージからのファイルをアップロードするか、ウェブサイトのホームディレクトリに保存されている Docker Compose ファイルを使用してデプロイできます。 up
(pull
と force-recreate
を含む)、stop
、down
など、スタックに対する一般的な操作がサポートされています。スタックは作成後に変更および更新できます。
注釈: このセクションを使用して、Dockerfile やアプリケーションに必要なその他のファイルをデプロイすることはできません。
Docker Compose ファイルをデプロイするには:
-
[Docker] > [スタック] > [スタックを追加] に移動します。
-
プロジェクト名を入力し、docker-compose ファイルをデプロイするいずれかの方法を選択します。
- エディタ: ファイルの内容を定義または貼り付けます.
- アップロード: ローカルストレージから Compose ファイルをアップロードします。
- ウェブスペース: ドメインのホームディレクトリに保存されている Compose ファイルを選択します。 [ウェブスペース] で、ファイルが保存されているドメインを選択します。 [Compose ファイル] で、Compose ファイルの場所を参照します。
カスタムコンテナを宣言してビルドできます。ビルドプロセス中に作成されたアーティファクトはすべて、ウェブサイトのホームディレクトリ内に配置されます。
Compose ファイル形式の詳細については、 Docker ドキュメント を参照してください。
Docker で Portainer コンテナをデプロイする
Portainer は、コンテナとスタックのデプロイ、コンテナのステータスとログの表示、ユーザーとチームの作成、環境のセキュリティ保護などを容易にするコンテナ管理ソフトウェアです。
Portainer をインストールするには、 [Docker] > [Portainer をインストール] に進みます。インストールの完了後、Docker 内で Portainer コンテナを管理するには、 [Docker] > [Portainer へ移動] に進みます。
注釈: Portainer は現在ベータ機能です。
Portainer の詳細については、 Portainer のドキュメント を参照してください。