Portainerは、Docker、Kubernetes、およびNomad向けのオープンソースのコンテナー管理ソリューションであり、コンテナーの開始、作成、および実行を簡単な方法で簡素化します。 コンテナ、イメージ、ネットワーク、およびボリュームを管理するためのWebベースのダッシュボードを提供します。
このチュートリアルでは、LinuxサーバーにPortainerコンテナー管理ソリューションをインストールして構成し、それを使用してさまざまなアプリを実行するDockerコンテナーを作成および管理する方法を学習します。 また、Nginxプロキシマネージャーを使用して、これらのコンテナーをNginxの背後に配置する方法も学習します。
前提条件
- Ubuntu / Debian / Cent OS / Rocky Linux 8 /AlmaLinuxを実行しているLinuxサーバー。
- sudo権限を持つroot以外のユーザー。
- Portainerのサーバーを指す完全修飾ドメイン名(FQDN)(
portrainer.example.com
)およびNginxプロキシマネージャー(npm.example.com
)。
ステップ1-ファイアウォールを構成する
Cent OS / Rocky Linux / Alma Linux
Firewalldファイアウォールがインストールされている必要があります。 ファイアウォールのステータスを確認してください。
$ sudo firewall-cmd --state running
ポート80、9443、および443を開きます。Portainerはポート9443を使用して、HTTPS経由でWebUIを公開します。 Nginx Proxy Managerは、UIにポート81を使用します。
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https $ sudo firewall-cmd --permanent --add-port=9443/tcp $ sudo firewall-cmd --permanent --add-port=81/tcp
ファイアウォールをリロードして変更を有効にします。
$ sudo firewall-cmd --reload
Ubuntu / Debian
UbuntuおよびDebianシステムは、デフォルトでufw(Uncomplicated Firewall)を使用します。
ファイアウォールが実行されているかどうかを確認します。
$ sudo ufw status
実行中の場合は、ポート80、9443、および443を開きます。
$ sudo ufw allow 80 $ sudo ufw allow 443 $ sudo ufw allow 9443 $ sudo ufw allow 81
ファイアウォールが実行されていない場合は、SSHポートを開きます。
$ sudo ufw allow "OpenSSH"
ファイアウォールが実行されていない場合は、ファイアウォールを有効にします。
$ sudo ufw enable
実行中の場合は、リロードして変更を適用します。
$ sudo ufw reload
ステップ2-Dockerをインストールする
Cent OS / Rocky Linux / Alma Linux
次のコマンドを実行してDockerをインストールします。
$ sudo yum install -y yum-utils $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum install docker-ce docker-ce-cli containerd.io
Ubuntu
$ sudo apt install ca-certificates curl gnupg lsb-release $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) 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 update $ sudo apt install docker-ce docker-ce-cli containerd.io
Debian
$ sudo apt install ca-certificates curl gnupg lsb-release $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo apt update $ sudo apt install docker-ce docker-ce-cli containerd.io
Dockerサービスを有効にして開始します。
$ sudo systemctl start docker --now
ユーザー名をDockerグループに追加します。
$ sudo usermod -aG docker $USER
システムからログアウトし、再度ログインして変更を適用します。
ステップ3-DockerComposeをインストールする
Dockercomposeバイナリをダウンロードしてインストールします。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
実行可能権限をバイナリに適用します。
$ sudo chmod +x /usr/local/bin/docker-compose
ステップ4-Portainerをインストールする
Portainerのディレクトリを作成します。
$ mkdir ~/portainer
ディレクトリに切り替えます。
$ cd ~/portainer
編集用にDockerComposeファイルを作成して開きます。
$ nano docker-compose.yaml
次のコードを貼り付けます。
version: "3.3" services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: always privileged: true volumes: - ./data:/data:Z - /var/run/docker.sock:/var/run/docker.sock:Z ports: - 9443:9443
を押してファイルを保存します Ctrl + X と入る Y プロンプトが表示されたら。
Docker作成ファイルを見てみましょう。
- DockerHubからPortainerCommunityEditionの最新バージョンを取得しています。 Portainer Community Editionは無料で使用できますが、BusinessEditionには有料ライセンスが必要です。 Business Editionをプルすることはできますが、それを使用するためのライセンスキーの入力を求められます。
- コンテナに名前を付けました
portainer
識別とリンクの目的で。 - 再起動ポリシーはに設定されています
always
起動時にコンテナが起動したままになるようにします。 - ザ
privileged: true
設定は、SELinuxを使用しているため、PortainerがDockerソケットにアクセスし、特権コンテキストで実行できるようにするためのものです。 SELinuxを使用していない場合は、この設定を削除できます。 この設定により、Portainerコンテナは、ハードウェアへのアクセスを含め、ホストシステム上のすべてにアクセスできます。 したがって、この設定を有効にするのは、自分が何をしているかがわかっている場合のみにしてください。 - ザ
volumes
セクションでは、バインドマウントを使用して、ホスト上のフォルダーをコンテナー内のフォルダーにマップします。 ディレクトリを公開しました~/portainer/data
関連するデータを格納するためのコンテナと、コンテナ管理のためのDockerソケットAPI。 ザ:Z
labelは、ホストでSELinuxを実行していることをDockerに通知します。 SELinuxを有効にしていない場合は、ラベルを削除する必要があります。
Portainerを起動します。
$ docker-compose up -d
コンテナの状態を確認してください。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 916411e8d12e portainer/portainer-ce:latest "/portainer" 5 seconds ago Up 4 seconds 8000/tcp, 9000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp portainer
ステップ5-Portainerにアクセスして構成する
URLを開く https://<yourserverIP>:9443
ブラウザで、次の画面が表示されます。
新しい管理者ユーザーを作成するように求められます。 ユーザーの詳細を追加します。 チェックボックスをオフにします 匿名の統計の収集を許可する プライバシーを気にするなら。 クリック ユーザーを作成 ボタンをクリックしてインストールを開始し、新しい管理者アカウントを作成します。
次に、次のダッシュボード画面が表示されます。
数秒後、自動的に更新され、次の画面が表示されます。
Portainerが実行されているローカル環境が表示されます。 クリックしてください ローカル 始めるための環境。
ほとんどのセクションは自明です。 ザ スタック セクションは、Docker作成ファイルを使用してコンテナーを作成するのに役立ちます。 を使用してコンテナを直接デプロイできます コンテナ サイドバーのカテゴリ。 現在のDocker環境は、 ホスト セクション。 ザ アプリテンプレート セクションには、最も一般的なアプリケーションをインストールするためのDocker作成ファイルがプリインストールされています。 カスタムテンプレートを作成することもできます。広告
ザ 設定 このセクションでは、カスタムDockerレジストリの追加、Docker swarmの複数のホストの追加、ユーザーアクセスの構成、データのバックアップ、Portainerのカスタマイズなどのさまざまな設定を構成できます。
ステップ5-NginxProxyManager(NPM)を使用してPortainerをリバースプロキシの背後に配置します
先に進む前に、NginxProxyManagerを使用してPortainerをリバースプロキシの背後に配置しましょう。 Nginx Proxy Managerは、Nginxをリバースプロキシホストとして設定するためのWeb管理UIを提供するDockerアプリケーションです。 リダイレクトまたはストリーミングホストとしても使用できます。
NPMをインストールする
最初のステップは、Nginx Proxy Manager(NPM)のネットワークを作成することです。 を開きます ネットワーク セクションをクリックしてボタンをクリックします ネットワークを追加 新しいネットワークを作成します。
ネットワークに名前を付け、すべての設定を変更しないでください。 クリック ネットワークを作成する 終了するボタン。
訪問 スタック を使用して新しいスタックを作成します スタックを追加 ボタン。
スタックに次の名前を付けます nginx-proxy-manager
次のコードを貼り付けます。
version: "3.3" services: npm-app: image: 'jc21/nginx-proxy-manager:latest' container_name: npm-app restart: unless-stopped ports: - '80:80' # Public HTTP Port - '443:443' # Public HTTPS Port - '81:81' # Admin Web Port # Add any other Stream port you want to expose # - '21:21' # FTP environment: DB_MYSQL_HOST: "npm-db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD} DB_MYSQL_NAME: "npm" # Uncomment the line below if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: - ./npm-data:/data:Z - ./letsencrypt:/etc/letsencrypt:Z depends_on: - npm-db networks: - npm-network - npm-internal npm-db: image: 'mariadb:latest' container_name: npm-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: ${DB_MYSQL_PASSWORD} volumes: - ./npm-data/mysql:/var/lib/mysql:Z networks: - npm-internal networks: npm-internal: npm-network: external: true
データベースとルートのMySQLパスワードを設定するために2つの環境変数を設定しました。 Portainerは、環境変数を使用してシークレットを設定するために使用できます。 ページを下にスクロールして、 環境変数を追加する 強力なパスワードを追加するためのボタン。
クリック スタックをデプロイする ボタンをクリックして、NPMコンテナを作成して開始します。
NPMにアクセスする
URLを開く https://<yourserverIP>:81
ブラウザで、次の画面が表示されます。 次のデフォルトのクレデンシャルを入力してサインインします。
電子メールアドレス: [email protected]
パスワード: changeme
次に、すぐに名前とメールアドレスを設定するように求められます。 クリック 保存する ボタンをクリックすると、新しいパスワードを作成するように求められます。 クリック 保存する もう一度ボタンを押して開始します。
訪問 ホスト>>プロキシホスト をクリックします プロキシホストを追加する ボタン。
ドメイン名を次のように入力します portainer.example.com
。 スキームを選択してください https
。 コンテナの名前をとして入力します 転送ホスト名 および9443として 転送ポート。 オプションを確認してください 一般的なエクスプロイトをブロックする と Websocketのサポート オプション。
[SSL]タブに切り替えて、[新しいSSL証明書をリクエストする ドロップダウンメニューから。 チェックしてください SSLを強制する と HTTP/2サポート SSL接続を保護および最適化するためのオプション。 更新通知を受け取り、利用規約に同意するには、メールアドレスを入力してください。 クリック 保存する ボタンをクリックして、Portainerのプロキシホストの設定を完了します。
PortainerをNPMコンテナに接続します
プロキシホストを設定しましたが、コンテナはまだNPMネットワークに接続されていません。 Portainerダッシュボードに戻り、 コンテナ セクションを選択し、 ポーター 容器。
選択する npm-network
下のドロップダウンメニューから 接続されたネットワーク セクションをクリックし、 ネットワークに参加する ボタンをクリックして、Portainerコンテナをプロキシマネージャのネットワークに追加します。
エラーが発生する可能性がありますが、ページを更新すると、コンテナがNPMネットワークに追加されていることがわかります。
URLを使用してPortainerにアクセスできるはずです https://portainer.example.com
ブラウザで。
同様の手順に従って、次のような公的にアクセス可能なURLの背後にNPMを配置できます。 https://npm.example.com
Nginxプロキシマネージャーのチュートリアルで説明されているように。
PortainerのパブリックURLを設定したので、公開された9443ポートを削除できます。 これを行うには、ターミナルに戻り、portainerディレクトリに切り替えます。
$ cd ~/portainer
Docker作成ファイルを開いて編集します。
$ nano docker-compose.yaml
以下に示すように、コメントアウトしてポートセクションを削除します。
version: "3.3" services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: always privileged: true volumes: - ./data:/data:Z - /var/run/docker.sock:/var/run/docker.sock:Z #ports: # - 9443:9443 networks: - npm-network networks: npm-network: external: true
を押してファイルを保存します Ctrl + X と入る Y プロンプトが表示されたら。
ここでは、Portainerコンテナを再起動する必要があるため、NPMネットワークの詳細を追加しました。
Portainerコンテナを停止します。
$ docker-compose down --remove-orphans
更新された構成でコンテナーを再起動します。
$ docker-compose up -d
ステップ6-アプリテンプレートを使用してコンテナーをデプロイする
Portainerは、最小限の構成でアプリケーションを直接起動するための事前定義されたテンプレートをいくつか提供します。
訪問 アプリテンプレート セクションを選択し、任意のテンプレートを選択します。 名前を付けて、使用するネットワークを選択します。 詳細オプションセクションを使用して、カスタムポート、ネットワーク、およびボリュームマウントを展開します。
クリック コンテナをデプロイします ボタンをクリックして、アプリケーションのデプロイを終了します。 ここでは、Redisコンテナーをデプロイしています。
ステップ7-コンテナを管理する
既存のコンテナを管理しましょう。 コンテナページを開くと、実行中のすべてのコンテナが表示されます。
最近作成したものをクリックします hw-redis
続行するコンテナ。
上部には、実行中のコンテナで実行できるアクションのリストが表示されます。 コンテナを停止して強制終了できます。 再作成すると、コンテナが最初から作成されます。 ザ 複製/編集 オプションを使用すると、別の同一のコンテナを作成して、起動する前に設定を変更できます。
ザ コンテナのステータス は、実行時間、IPアドレス、およびコンテナに関するその他の詳細を示します。
ザ ログ オプションは、の出力を表示します docker logs
指図。 コマンドの出力はキャッシュされないため、ページを更新するたびに、コマンドは最初から実行されます。
ザ 検査する オプションはコマンドを実行します docker inspect
コンテナ上にあり、その出力を表示します。
ザ 統計 オプションは、コンテナの使用状況をリアルタイムで表示します。
を使用してコンテナコンソールを起動できます コンソール オプション。 コマンドと実行するシステムユーザーの入力を求められます。
を押します 接続 ボタンをクリックしてコンソールを起動します。
ザ 添付 オプションはを実行します docker attach
指図。
コンテナの詳細ページには他のオプションがあります。 既存のコンテナを使用してイメージを作成できます。 その他のオプションには、コンテナの再起動ポリシーの変更や、既存のコンテナへのネットワークの接続または切断が含まれます。
外側のコンテナをPortainerに取り付けます
Portainerの外部で作成したコンテナは、Portainerが実行しているのと同じシステムで作成されている限り、その内部に表示されます。 これが可能なのは、PortainerがWebSocketを使用してDockerに接続されているためです。
HelloWorldDockerコンテナーを実行してテストしてみましょう。
$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:10d7d58d5ebd2a652f4d93fdd86da8f265f5318c6a73cc5b6a9798ff6d2b2e67 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
ターミナルのコンテナリストを確認してください。 私たちは使用しています -a
停止したコンテナを含むすべてのコンテナのリストを表示するフラグ。 コンテナの名前は次のように表示されます。 sad_williamson
。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5fa46b85d594 hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago sad_williamson .....
次に、Portainer Containersページを確認し、 こんにちは世界 コンテナは、同じ名前のリストで停止したものとして表示されます。
結論
これで、Docker管理およびNginxプロキシマネージャー用のPortainerのインストールと使用に関するチュートリアルは終了です。 今後のチュートリアルでは、Dockerイメージの構築、カスタムコンテナーの作成、DockerスウォームでのPortainerの使用について説明します。 ご不明な点がございましたら、下のコメント欄に投稿してください。
The post NginxプロキシマネージャーでDocker管理のためにPortainerをインストールして使用する方法 appeared first on Gamingsym Japan.