docker を使ってみる (チュートリアル Part5: スタック)
Docker
Published: 2019-10-20

やったこと

docker を使ってみます。

チュートリアルの Part5 です。

調査

スタック (stack)

スタックは相互関係を持つサービスのグループであり、依存関係を共有します。そして、同時にオーケストレート(訳者注;複数のサーバ上で一斉に挙動する)やスケール(訳者注;サービスの拡大および縮小)します。

docker-compose.yml の準備

docker-compose.yml

version: '3'
services:
  web:
    image: hogehoge/get-started:part1
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - '80:80'
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
  redis:
    image: redis
    ports:
      - "6379:6379"
    volumes:
      - ./data:/data
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet:

web.image はご自身の環境に合わせて変更してください

myvm1 環境にコピー

$ docker-machine scp docker-compose.yml myvm1:~

ディレクトリ準備

ホスト上の ./data に対して、Redis コンテナでは、/data でアクセスします。

$ docker-machine ssh myvm1 "mkdir ./data"

デプロイ

$ docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml getstartedlab"

確認

$ docker-machine ssh myvm1 "docker stack ps getstartedlab"
ID                  NAME                         IMAGE                             NODE                DESIRED STATE       CURRENT STATE          ERROR               PORTS
zh7eyy78eeiw        getstartedlab_redis.1        redis:latest                      myvm1               Running             Running 21 hours ago
a7qov9u2po63        getstartedlab_visualizer.1   dockersamples/visualizer:stable   myvm1               Running             Running 21 hours ago

redisvisualizer が追加されているのが確認できると思います。

確認

redis

http://192.168.99.100 http://192.168.99.101 にアクセスする度にカウンタが増えていきます。

visualizer

http://192.168.99.100:8080 でページを見ることが出来ます。

参考