データセンタプログラミング13


13-Docker Swarm(1)


🔴 Docker Swarm (1)
  • 複数の容器があってもcliでコントロールできます.
  • 機械は、複数の容器で制御できるが、手作業でタイプすることは難しい.
  • 従って、自動化手法を用いるDocker Swarm
  • Docker Swarmを行うためには、ドック&ドックマシンを1台取り付ける必要があります.
  • 🔴 Docker Swarm (2)
  • コンテナは複数のノードでも移動可能.
  • マシンにDocker Swamを使用し、多くのコンテナが稼働している.
  • Orchestrationにはmanagerがあり、これはymlファイルを確保し、ymlファイルに基づいてコンテナを画像制御で運搬する作業者のパターンである.
  • 🔴 Docker makes a single virtual system
  • 実行するアプリケーションに大量のサービスイメージを入れ、ymlを使用して構成し、ymlファイルをcommand riseインタフェースとして配布すれば、多くのコンテナに分割できる.
  • ドッキングマシンによるリモートコンピュータ管理
  • Docker Swandは、リモートノード以外のサービスおよびコンテナを管理するために使用することができる.
  • そのため、ドッキングマシンを使用してノードを取得し、実際のサービスはdocker composite ymlファイルから作成され、下図のように実行される.
  • 🔴 Orchestrator
  • Container Orchestration Basic
    :複数のコンピュータがymlファイルの内容を移動し、ネットワークに接続できる便利さを提供します.
    :automaticつまり、自動化は便利なために使われています.
    ▶クバーネディスはアーケード、アーケードの対象はドックコンテナ.
  • 🔴 実習(1)
    # Docker Toolbox 설치 후 IP를 못 얻어오는 경우
    $ docker-machine rm default 
    $ docker-machine create --driver virtualbox default
    # Create docker machines
    docker-machine create --driver virtualbox manager
    docker-machine create --driver virtualbox worker1
    docker-machine create --driver virtualbox worker2
    # check docker machines
    docker-machine ls
    docker-machine ip manager
    docker-machine worker1
    docker-machine worker2
    docker-machine ssh manager
    docker-machine ssh worker1
    docker-machine ssh worker2
    # define manager node(1)
    docker-machine ssh {manager name} \ docker swarm init--advertise-addr {manager ip}
    docker-machine ssh manager \
    docker swarm init --advertise-addr ###.###.##.###
    🤜 docker swarm join--token番号を覚えておく必要があります
    🔴 実習(2)
    # swarm node management by manager
    docker-machine ssh manager \ docker node --help
    docker-machine ssh manager \ docker node --ls
    # docker swarm joining at worker machine
    docker-machine ssh {worker name} \ docker swarm join ---token <token> <manager ip>:####
    🔴 Docker stack
  • Swamは、このチュートリアルの前の段階のように個々のコンテナを作成しません.
  • すべてのSwarmオブジェクトはstack filesというmanipsetで説明できる.
  • つまり、実行するyamlファイルをswarmに含むアプリケーション.
  • 🔴 Task deployment (1)
    # create docker-compose.yml
    version: "3.7"
    services:
    # 웹서버가 하나가 이미지로 들어가 있음
     webserver:
     # 이미지는 nginx 최신 버전임
        image: nginx:latest
        deploy:
        # 4개의 컨테이너로 띄워달라는 의미
          replicas: 4
          # placement는 규칙임
          placement:
          # manager인 경우, 웹서버 일을 하지 않도록 명령
            constraints: [node.role != manager]
        ports:
         -8080:80
    🔴 Task deployment (2)
    # Copy docker-compose.yml into manager (yml 파일 주기)
    docker-machine scp docker-compose.yml manager:~
    # Deploy application stack through manager (일해~)
    docker-machine ssh manager \
    docker stack deploy -c docker-compose.yml helloswarm
    # Check stack deployment status
    docker-machine ssh manager \ docker stack ls
    🐧 dockerマシンscpなに?
  • 自分が働いているローカルホスト上でファイルをマシンでコピー
  • 🔴 Task monitoring
    docker service ls
    docker service ps helloswarm
    docker service ps helloswarm_webserver
    🔴 Task release
    # deployed stack release
    docker-machine ssh manager \
    docker stack rm helloswarm
    🔴 Release Worker Nodes
    # worker node leave a joined swarm
    docker-machine ssh {worker name} \ docker swarm leave
    # start
    docker-machine ssh worker1 \ docker swarm leave
    docker-machine ssh worker2 \ docker swarm leave
    🔴 Remove docker machines
    docker-machine stop
    docker-machine rm