Alpine Linux 3.9.0でDocker Swarmを作成する

前書き

このガイドでは、複数のAlpine Linux 3.9.0サーバーとPortainerを使用してDockerスウォームを作成および構成する方法について説明します。Vultrは現在CentOS 7 x64とUbuntu 16.04 x64の両方をサポートするワンクリックDockerアプリを提供していることに注意してください。

前提条件

最初に、Alpine Linux 3.9.0を実行する少なくとも2つのVC2サーバーが必要です。Docker Swarm内では、これらのサーバーの1つがmanager node-外部ネットワークとのインターフェースとワーカーノードへのジョブの委任として機能します。もう一方のサーバーはworker node、マネージャーノードによって委任されたジョブを実行します。

アプリケーションに冗長性や計算能力が必要な場合は、3つ以上のサーバーを起動できますが、このガイドで提供されている手順は引き続き適用されます。

配備

Vultr サーバー配備インターフェースにアクセスします

Vultr Cloud (VC2)ページの上部でタブが選択されていることを確認します。

Server Locationセクションから任意の場所を選択できますが、すべてのサーバーが同じ場所にある必要があります。そうしないと、Dockerスウォームをサーバーにデプロイできません。

セクションのISO LibraryタブをServer Type選択し、Alpine Linux 3.9.0 x86_64画像を選択します。

Server Sizeセクションから適切なオプションを選択します。このガイドでは25 GB SSDサーバーサイズを使用しますが、アプリケーションのリソース要件を満たすには不十分な場合があります。Vultrを使用すると、サーバーの起動後にサーバーのサイズを簡単にアップグレードできますが、アプリケーションが最適に実行するために必要なサーバーのサイズを慎重に検討する必要があります。

ではAdditional Featuresセクション、あなたが選択する必要がありますEnable Private Networkingオプションを選択します。他のオプションはこのガイドに従う必要はありませんが、アプリケーションのコンテキストでそれぞれが意味があるかどうかを検討する必要があります。

Multiple Private Networksアカウントでこのオプションを以前に有効にしている場合は、既存のサーバーを選択するか、サーバーの新しいプライベートネットワークを作成する必要があります。有効にしていない場合は、このセクションを無視できます。プライベートネットワークを手動で構成する方法については、このガイドをご覧ください

ここでは、このFirewall Groupセクションをスキップしてください。Docker Swarmでマネージャーノードとして機能するサーバーのみが公開ポートを必要とし、これはサーバーのデプロイ後に構成する必要があります。

ページの一番下に、Server Qty少なくとも2つのを入力する必要があります。前述のように、3台以上のサーバーが必要になる場合がありますが、このガイドでは2台で十分です。

最後に、Server Hostname & Labelセクションで、各サーバーの意味のある覚えやすいホスト名とラベルを入力します。このガイドの目的のために、最初のサーバーのホスト名とラベルは次のようになりますdocker-managerDocker Manager、とrespectively- docker-workerDocker Worker、それぞれ、第二のために。

すべての構成を再確認したらDeploy Now、ページの下部にあるボタンをクリックしてサーバーを起動できます。

サーバーにAlpine Linux 3.9.0をインストールする

VultrのISOライブラリからOSを選択したため、各サーバーにAlpine Linux 3.9.0を手動でインストールして構成する必要があります。

Vultrにサーバーを割り当てるために1〜2分待った後、サーバー管理インターフェイスサーバーの三重ドットmore optionsアイコンをクリックし、オプションを選択します。Docker ManagerView Console

ログインプロンプトが表示されたコンソールにリダイレクトされます。そうでない場合は、Vultrがサーバーの展開を完了するまでさらに1分お待ちください。

そのログインプロンプトでroot、ユーザー名としてを入力します。Alpine Linux 3.9.0のライブバージョン(サーバーが現在実行しているバージョン)では、ログイン時にスーパーユーザーがパスワードを入力する必要はありません。

rootアカウントに正常にログインすると、ウェルカムメッセージが表示され、その後に次のようなシェルプロンプトが表示されます。

localhost:~# 

Alpine Linuxインストーラーを起動するには、次のコマンドを入力します。

# setup-alpine

まず、適切なキーボードレイアウトを選択します。このガイドでは、usレイアウトとバリアントを使用します。

ホスト名を設定するときは、展開中にこのサーバーに設定したのと同じホスト名を選択します。このガイドに正確に従っている場合、ホスト名はになりますdocker-manager

2つのネットワークインターフェイスが使用可能である必要があります:eth0およびeth1。のみが表示さeth0れる場合は、サーバーのプライベートネットワークが正しく構成されていません。初期eth0使用dhcp、および初期化しeth1、ネットマスクをプライベートIPアドレスを使用して、このサーバは、展開中に割り当てられたゲートウェイ。これらの詳細には、サーバーの設定インターフェイスからアクセスできます。プロンプトが表示されたら、手動でネットワーク構成を実行しないでください。

rootアカウントの新しいパスワードを入力し、これらのサーバーの展開先として選択した場所に適したタイムゾーンを選択します。

HTTP / FTPプロキシを使用する場合は、そのURLを入力します。それ以外の場合は、プロキシURLを設定しないでください。

システムクロックの同期を管理するNTPクライアントを選択します。このガイドではを使用しますbusybox

使用するパッケージリポジトリミラーを求められたら、番号を入力して明示的に選択します。次のように入力して、最速のものを自動的に検出して選択しますf。またはe、と入力してリポジトリー構成ファイルを手動で編集します。これは、Alpine Linuxに慣れていない限り、お勧めできません。このガイドでは、最初のミラーを使用します。

SSHを使用してサーバーにアクセスするか、SSHベースのファイルシステムをホストする場合は、使用するSSHサーバーを選択します。このガイドではを使用しますopenssh

使用するディスクを求められたら、タイプvdaとしてディスクを選択しますsys

これで、Alpine Linux 3.9.0がサーバーにインストールされます。以前にデプロイした他のすべてのサーバーについてこのプロセスを繰り返し、ホスト名とeth1ネットワークインターフェイスを正しい値に置き換えます。

インストール後のサーバー構成

この時点では、サーバーはまだAlpine Linux 3.9.0のライブISOバージョンを実行しています。SSDインストールから起動するには、サーバーの設定インターフェイスにアクセスし、Custom ISOサイドメニューエントリに移動して、Remove ISOボタンをクリックします。これでサーバーが再起動します。そうでない場合は、手動で再起動します。

サーバーの再起動が完了したら、サーバーのウェブコンソールに戻りますDocker Manager

インストールプロセスで前に設定したパスワードを使用して、rootアカウントにログインします。

/etc/apk/repositories使用する3行目のコメントを外して、コミュニティパッケージリポジトリを有効にしviます。同様の方法でエッジリポジトリとテストリポジトリを有効にすることができますが、このガイドに従う必要はありません。

次のシェルコマンドを入力して、サーバーのローカルパッケージインデックスを以前に選択したリモートリポジトリと同期します。

# apk update

次に、古いパッケージをアップグレードします。

# apk upgrade

前と同じように、以前にデプロイしたサーバーごとにこの構成プロセスを繰り返します。

サーバーにDockerをインストールする

Dockerパッケージ自体をインストールする前に、別のdockerユーザーを作成することもできます。これを行うには、次のコマンドを使用します。

# adduser docker

注: Dockerパッケージがインストールされると、この新しいユーザーと新しいdockerグループに追加されたすべてのユーザーはroot権限を持ちます。Moby Githubリポジトリから次の問題を参照してください。

ために--privilegedドッキングウィンドウでは、誰もが「ドッキングウィンドウ」グループに追加し、ルートと同等です。dockerグループの誰もが、すべての権限昇格ポリシーとシステムの監査について裏口を持っています。

これは、sudoを実行してrootになり、ポリシーを適用して監査を適用できる人とは異なります。

dockerユーザーにsudo権限を付与する場合は、最初にsudoパッケージをインストールします。

# apk add sudo

次に、sudoグループを作成します。

# addgroup sudo

最後に、dockerユーザーをsudoグループに追加します。

# adduser docker sudo

これで、このガイドのステップ4に従って、sudoの構成を完了できます。

これで、Dockerパッケージをインストールする準備が整いました。dockerDockerをインストールして構成するために、別のsudo対応ユーザーがいる必要は厳密にはありませんが、このガイドはその規則に従います。

次のコマンドでDockerパッケージをインストールします。

# apk add docker

次に、Docker initスクリプトを有効にします。

# rc-update add docker

最後に、Dockerデーモンを起動します。

# rc-service docker start

次のコマンドを使用して、Dockerが実行されていることを確認できます。

# docker info

前回と同様に、最初にデプロイしたサーバーごとにこのDockerインストールプロセスを繰り返します。

1つのマネージャーノードと1つのワーカーノードでDockerスウォームを初期化する

これですべてのセットアップが処理され、ついにDockerスウォームを作成する準備が整いました。

スウォームを作成してマネージャーノードを追加する

Docker ManagerサーバーのWebコンソールに戻ります。このサーバーをスウォームのマネージャーノードとして構成します。docker以前にユーザーを作成することを選択した場合は、スーパーユーザーではなくそのアカウントを使用してログインします。

次のコマンドを入力しますが192.0.2.1Docker Managerサーバーに割り当てられた(パブリックではなく)プライベートIPアドレスに置き換えます。

$ docker swarm init --advertise-addr 192.0.2.1

Dockerは、プライベートネットワーク内の他のサーバーで実行できるコマンドを表示し、それらをワーカーノードとしてこの新しい群に追加します。このコマンドを保存します。

ワーカーノードを追加する

次に、Docker WorkerサーバーのWebコンソールに移動し、docker作成したユーザーでサインインします。

作成したswarmにこのサーバーをワーカーノードとして追加するには、swarm作成コマンドの出力から保存したコマンドを実行します。次のようになります。

$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377

Dockerはノードがスウォームに参加できたかどうかを出力します。ワーカーノードをスウォームに追加する際に問題が発生した場合は、プライベートネットワーク構成を再確認し、トラブルシューティングについてこのガイドを参照してください

最初に3つ以上のサーバーをデプロイした場合は、上記のコマンドを使用して残りをワーカーノードとしてスウォームに追加し、アプリケーションで使用できるリソースの量を増やすことができます。または、マネージャーノードを追加することもできますが、それはこのガイドの範囲を超えています。

SSLを使用してPortainerをデプロイし、Dockerスウォームを管理する

この時点で、Docker Swarmを使用する準備ができています。ただし、必要に応じて、スウォームのマネージャーノードでPortainerスタックを起動できます。Portainerは、スウォームとその中のノードを管理するための便利なWebインターフェースを提供します。

群れのためのファイアウォールグループを作成する時が来ました。アプリケーションが特に必要としない限り、マネージャーノードのポートのみを公開します。注意深く考慮せずにワーカーノードのポートを公開すると、脆弱性が生じる可能性があります。

移動し、ファイアウォール管理インターフェイスと新しいファイアウォールグループを作成します。アプリケーションは公開するポートを指定する必要がありますが、少なくとも、9000Portainerのポートを公開する必要があります。このファイアウォールグループをDocker Managerサーバーに適用します。

必須ではありませんが、SSLでPortainerを保護することを強くお勧めします。このガイドでは、自己署名OpenSSL証明書のみを使用しますが、本番環境ではLet's Encryptの使用を検討する必要があります。

Docker ManagerサーバーのWebコンソールに移動し、dockerユーザーを使用してログインし、次のコマンドを使用して自己署名OpenSSL証明書を生成します。

$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650

~/portainer-agent-stack.yml次の内容で新しいファイルを作成します。

version: '3.2'

services:
  agent:
    image: portainer/agent
    environment:
      AGENT_CLUSTER_ADDR: tasks.agent
      CAP_HOST_MANAGEMENT: 1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
      - /:/host
    networks:
      - agent_network
    deploy:
      mode: global

  portainer:
    image: portainer/portainer
    command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
    ports:
      - target: 9000
        published: 9000
        protocol: tcp
        mode: host
    volumes:
      - portainer_data:/data
      - /home/docker/certs:/certs
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

このDockerスタック構成ファイルを変更して要件に適合させたら、それをデプロイできます。

$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer

Portainerが機能していることを確認するには、Dockerにスタックをデプロイする1〜2分後、次のコマンドを実行します。

$ docker ps

イメージportainer/portainer:latestとを含む2つのコンテナが表示されportainer/agent:latest、Portainerが正しく起動したことを確認します。

これで、HTTPSを使用Docker ManagerしてポートでサーバーのパブリックIPアドレスにアクセスすることにより、Dockerスウォームを構成および管理できます9000



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。