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

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

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

概要RancherOSは、システムサービスを実行するためのPID 0としてシステムDockerデーモンを実行する、信じられないほど軽量なオペレーティングシステム(わずか約60 MB)です。

Ubuntu 18.04にDocker CEをインストールする

Ubuntu 18.04にDocker CEをインストールする

はじめにDockerは、コンテナーとして実行されるプログラムをデプロイできるアプリケーションです。それは人気のあるGoプログラミング言語で書かれました

Ubuntu 14.04へのDockerのインストール

Ubuntu 14.04へのDockerのインストール

別のシステムを使用していますか?Dockerは、コンテナーとして実行されるプログラムをデプロイできるアプリケーションです。それは人気のある囲碁programminで書かれました

Dockerを使用してNode.jsアプリケーションをデプロイする

Dockerを使用してNode.jsアプリケーションをデプロイする

この記事では、Dockerコンテナー内にノードアプリケーションをデプロイする方法を示します。注:このチュートリアルでは、Dockerがインストールされており、

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

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

Harbourは、Dockerイメージを格納および配布するオープンソースのエンタープライズクラスのレジストリサーバーです。HarbourはオープンソースのDockerディストリビューションを拡張しますb

CentOS 7でKubernetesを使ってみる

CentOS 7でKubernetesを使ってみる

Kubernetesは、サーバーのクラスタ全体でコンテナ化されたアプリケーションを管理するためにGoogleが開発したオープンソースのプラットフォームです。それは10年に基づいて構築され、

Ubuntu 16.04にRancherをインストールする

Ubuntu 16.04にRancherをインストールする

別のシステムを使用していますか?はじめにRancherは、コンテナーを実行し、プライベートコンテナーサービスを構築するためのオープンソースプラットフォームです。牧場主がベース

CentOS 7にKubeadmを使用してKubernetesをデプロイする

CentOS 7にKubeadmを使用してKubernetesをデプロイする

概要この記事は、kubernetesクラスターをkubeadmですぐに稼働できるようにすることを目的としています。このガイドでは、2台のサーバーを

CoreOSへのdocker-composeのインストール

CoreOSへのdocker-composeのインストール

この記事では、CoreOSにdocker-composeをインストールする方法について説明します。CoreOSでは、/ usr /フォルダーは不変なので、標準の/ usr / local / binパスは使用できません。

CentOS 7にRancherをインストールする

CentOS 7にRancherをインストールする

別のシステムを使用していますか?はじめにRancherは、コンテナーを実行し、プライベートコンテナーサービスを構築するためのオープンソースプラットフォームです。牧場主がベース

Docker-composeを使用してPHPアプリケーションをデプロイする

Docker-composeを使用してPHPアプリケーションをデプロイする

PHPアプリケーションは通常、Webサーバー、リレーショナルデータベースシステム、および言語インタープリター自体で構成されます。このチュートリアルでは、レバラギンになります

CentOS 7へのDockerのインストール

CentOS 7へのDockerのインストール

別のシステムを使用していますか?Dockerは、仮想コンテナー内でのソフトウェアのデプロイメントを可能にするアプリケーションです。それは囲碁プログラムで書かれました

Ubuntu 14.04でのLXCコンテナの安全なデプロイと管理

Ubuntu 14.04でのLXCコンテナの安全なデプロイと管理

LXCコンテナー(Linuxコンテナー)は、単一のホスト上で複数の分離されたLinuxシステムを実行するために使用できるLinuxのオペレーティングシステム機能です。テス

Ubuntu 16.04でDockerを介してSentryをセットアップする

Ubuntu 16.04でDockerを介してSentryをセットアップする

別のシステムを使用していますか?はじめにSentryは、エラー追跡のためのオープンソースのソリューションです。Sentryは例外やその他の有用なメッセージをあちこちで追跡します

Debian 9でのDocker Swarm(CE)とのスティッキーセッション

Debian 9でのDocker Swarm(CE)とのスティッキーセッション

別のシステムを使用していますか?はじめにDocker Swarmは、個々のサーバーをコンピューターのクラスターに変えます。スケーリング、高可用性、

Dockerの使用方法:最初のDockerコンテナーの作成

Dockerの使用方法:最初のDockerコンテナーの作成

このチュートリアルでは、Dockerの基本的な使い方について説明します。Dockerがすでにインストールされていると思います。このチュートリアルの手順は、

Dockerによる負荷分散

Dockerによる負荷分散

Webアプリケーションを実行する場合、通常、マルチスレッドを使用するようにソフトウェアを変換することなく、リソースを最大限に活用したいと思いますo

CoreOSで、独自のDockerレジストリをセットアップする

CoreOSで、独自のDockerレジストリをセットアップする

私たちは皆、アプリケーションコンテナーを作成、管理、および複数のマシンに分散するプラットフォームであるDockerを知っています。Docker Inc.が提供するサービスt

Dockerを使用してCentOS 7でSQL Server 2017(MS-SQL)を開始する

Dockerを使用してCentOS 7でSQL Server 2017(MS-SQL)を開始する

前提条件Dockerエンジン1.8以降。最低4GBのディスク容量。4GB以上のRAM。ステップ1. DockerをインストールするSQL-Serverをインストールするには、Docker mus

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

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

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

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、