TIL(2020.12.13)


Docker


udemy - Docker Mastery: with Kubernetes +Swarm from a Docker Captain

Swarm Intro and Creating a 3-Node Swarm Cluster


Docker Swamコンセプト


コンテナを使用すると、任意の環境で簡単に配置できますが、別の問題が発生します.
  • コンテナのライフサイクルを自動化する方法
  • コンテナ規模の調整が容易な方法
  • コンテナに問題が発生した場合、
  • を再稼働する方法
  • コンテナは、動作を停止することなく
  • を更新する方法
  • 各コンテナに必要な環境変数
  • を正しく格納する方法
    上記の様々な問題を解決するために,複数のdocker hostを1つのように扱うことができるオーケストラを開発した.Swarm Modeのように、マルチコンテナパッケージアプリケーションを配備する際に使用されるコンテナ、リソースの自動化、ソート、調整、および管理は、container orchestrationと呼ばれる.
    Docker Swamは2014年からのOrchestrationツールについても言及するとともに、2016年バージョン1.12からのSwamkitの機能についても言及した.この2つの機能は同じですが、個別のプロジェクトとして存在します.
    1.12バージョンの移行はDockerとは独立しているが、その後SwarmkitはDockerに構築される.
    このコースではbullit-inのDocker Swarm Modeについて説明します.
    Swarm ModeはManagerとWorkerに分けられ、各マネージャはSwarmを介して各従業員と通信することができる.アクセスが許可されているマネージャのみがWorkerと通信し、情報を交換できます.

    分散システムで環境を共有するアルゴリズムをconsensus algorithmと呼び,docker swarmはRaftというアルゴリズムによってswarmで環境を共有する.前述したように、Managerはクラスタの状態を維持し、時間を手配し、SwamモードHTTP APIエンドポイントを提供するなどの機能を有する.
    Workerは、Managerによって割り当てられたTaskを実行します.
    Docker EngineをSwam Modeに参加させると、サービスが作成されます.サービスは,ユーザが単位業務をDockr Swarmに割り当てる論理ユニットであり,Swarmにより複数のTaskに分割して処理する.次に、分割されたTaskは各容器と1:1で一致する.


    サービスが作成されると、ユーザーは既存のDocker APIではなく新しいSwam APIを介してマネージャと通信し、マネージャは各タスクをWorkerに割り当てます.

    Docker Swam設定

    docker info
    Swarm: inactiveと確認されました.Swarmを構成するために初期化します.


    Initが実行される瞬間、さまざまな環境が構成されます.
    docker node ls
    生成されたManager Nodeを表示できます.

    サービスを作成すると、次のように自動的に名前が付けられ、サービスが生成されます.

    現在生成されているサービスを更新し、3つのタスクコピーを生成します.


    前述したように、3つのタスクが生成され、実行されています.

    コンテナを削除すると、自動的に別のコンテナが実行されます.サービスを常に稼働させることです.したがって、すべてのコンテナを削除するには、サービス自体を削除する必要があります.

    Creating 3-Node Swarm: Host Options


    3つのLinux環境では,各ノードをswarmで管理する方法を学習する.
    このため、dockerマシンとvirtualboxをインストールします.
    dockerマシンは、コマンドによって1台のホストではなく複数のホスト上でDocker実行環境を自動的に生成するツールです.

    3つのlinux環境を作成しdocker swarmを生成します.

    node 1から発行されたtokenにより、node 2はswarmに加えられる.最初の労働者としてswarmに加入した.workerはswarmコマンドを使用できません.そのためmanagerに更新する必要があります.


    swarmに参加したjoin tokenは、次のコマンドでいつでも確認できます.

    上記のように、ノード3はswarmに参加してManagerで更新することも可能である.