zoukankan      html  css  js  c++  java
  • docker-swarm学习

    swarm :多主机 多容器管理

    在docker 1.13中,集成了docker swarm命令

    如果你看到要单独起swar容器docker run swarm,那说明是老版的

    先安装docker-machine docker-compose,docker三剑客一起搞基

    安装Docker Machine(Linux)

    curl -L https://github.com/docker/machine/releases/download/v0.9.0-rc2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

    安装Docker compose

    pip install docker-compose

    好了,工具准备好了,我们正式开始:
    集群主要架构:3个worker,2个manager

    # 创建管理节点
    docker-machine create --driver virtualbox manager1
    docker-machine create --driver virtualbox manager2
    
    # 创建工作节点
    docker-machine create --driver virtualbox worker1
    docker-machine create --driver virtualbox worker2
    docker-machine create --driver virtualbox worker3

    查看环境变量

    docker-machine env manager1
    docker-machine ip manager1
    docker-machine ssh manager1 “command”  # 连接manager1运行命令

    创建集群

    docker-machine ssh manager1 docker swarm init --listen-addr 192.168.99.101:2377 --advertise-addr 192.168.99.101

    id 用manager1的ip

    你会看到返回一条命令,连入其他主机运行该命令(啥也不用改)就能以worker身份加入集群

    docker-machine ssh worker1 docker swarm join --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r 192.168.99.101:2377
    docker-machine ssh worker2 docker swarm join --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r 192.168.99.101:2377
    docker-machine ssh worker3 docker swarm join --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r 192.168.99.101:2377

    查看节点

    docker-machine ssh manager1 docker node ls

    查看是否加入成功

    下面加入管理节点

    # 获取manage token
    docker-machine ssh manager1 docker swarm join-token manager
    # 运行命令
    docker-machine ssh manager2 docker swarm join --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r 192.168.99.101:2377

    再次查看节点

    docker-machine ssh manager1 docker node ls

    查看是否加入成功

    下面用几个命令熟悉一下:

    # 创建一个overlay网络
    docker network create --driver overlay swarm_test
    
    # pull镜像到节点
    docker-machine ssh manager1 docker pull nginx:alpine
    
    # 多节点使用swarm_test组成一组服务
    docker service create --replicas 2 --name helloworld --network=swarm_test nginx:alpine
    --replicas 启动几个容器
    
    # 查看服务状态
    docker service ls
    
    # 查看 helloworld 服务详情
    docker service ps helloworld
    
    # 进入节点查看
    docker-machine ssh manager1 docker ps -a
    
    # 进入节点1执行ping命令节点2:
    docker-machine ssh manager1 docker exec -i helloworld.1.ay081uome3eejeg4mspa8pdlx 
    ping helloworld.2.16cvore0c96rby1vp0sny3mvt
    ssh连上集群,exec进入容器 运行ping命令
    # 删除服务
    docker service rm helloworld
    
    # 新建端口映射的服务
    docker service create --replicas 2 --name helloworld -p 7080:80 --network=swarm_test nginx:alpine
    
    # 杀死节点
    docker-machine ssh worker2 docker kill helloworld.2.7acmhj0udzusv1d7lu2tbuhu4
    
    # 启动3个节点
    docker service scale helloworld=3


    下面用docker-compose运行一个投票网站:
    在当前目录新建文件

    version: "3"
    services:
    
      redis:
        image: redis:alpine
        ports:
          - "6379"
        networks:
          - frontend
        deploy:
          replicas: 2
          update_config:
            parallelism: 2
            delay: 10s
          restart_policy:
            condition: on-failure
      db:
        image: postgres:9.4
        volumes:
          - db-data:/var/lib/postgresql/data
        networks:
          - backend
        deploy:
          placement:
            constraints: [node.role == manager]
      vote:
        image: dockersamples/examplevotingapp_vote:before
        ports:
          - 5000:80
        networks:
          - frontend
        depends_on:
          - redis
        deploy:
          replicas: 2
          update_config:
            parallelism: 2
          restart_policy:
            condition: on-failure
      result:
        image: dockersamples/examplevotingapp_result:before
        ports:
          - 5001:80
        networks:
          - backend
        depends_on:
          - db
        deploy:
          replicas: 2
          update_config:
            parallelism: 2
            delay: 10s
          restart_policy:
            condition: on-failure
    
      worker:
        image: dockersamples/examplevotingapp_worker
        networks:
          - frontend
          - backend
        deploy:
          mode: replicated
          replicas: 1
          labels: [APP=VOTING]
          restart_policy:
            condition: on-failure
            delay: 10s
            max_attempts: 3
            window: 120s
    
      visualizer:
        image: dockersamples/visualizer:stable
        ports:
          - "8080:8080"
        stop_grace_period: 1m30s
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
        deploy:
          placement:
            constraints: [node.role == manager]
    
    networks:
      frontend:
      backend:
    
    volumes:
      db-data:
    # 拷贝文件到集群
    docker-machine scp docker-compose.yml manager1:~
    
    # 部署
    docker-machine ssh manager1 "docker stack deploy -c docker-compose.yml vote"
    
    # 启动情况
    docker-machine ssh manager1 "docker stack ps vote"

    访问网站:
    ip:5000
    ip:5001
    ip:8080

    附上官网上的命令:

    docker-machine create --driver virtualbox myvm1 # Create a VM (Mac, Win7, Linux)
    docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 # Win10
    docker-machine env myvm1 # View basic information about your node
    docker-machine ssh myvm1 "docker node ls" # List the nodes in your swarm
    docker-machine ssh myvm1 "docker node inspect <node ID>" # Inspect a node
    docker-machine ssh myvm1 "docker swarm join-token -q worker" # View join token
    docker-machine ssh myvm1 # Open an SSH session with the VM; type "exit" to end
    docker-machine ssh myvm2 "docker swarm leave" # Make the worker leave the swarm
    docker-machine ssh myvm1 "docker swarm leave -f" # Make master leave, kill swarm
    docker-machine start myvm1 # Start a VM that is currently not running
    docker-machine stop $(docker-machine ls -q) # Stop all running VMs
    docker-machine rm $(docker-machine ls -q) # Delete all VMs and their disk images
    docker-machine scp docker-compose.yml myvm1:~ # Copy file to node's home dir
    docker-machine ssh myvm1 "docker stack deploy -c <file> <app>" # Deploy an app
  • 相关阅读:
    oracle的安装与plsql的环境配置
    Working with MSDTC
    soapui-java.lang.Exception Failed to load url
    Oracle 一个owner访问另一个owner的table,不加owner
    Call API relation to TLS 1.2
    Call API HTTP header Authorization: Basic
    VS2008 .csproj cannot be opened.The project type is not supported by this installat
    The changes couldn't be completed.Please reboot your computer and try again.
    Create DB Table View Procedure
    DB Change
  • 原文地址:https://www.cnblogs.com/wj5633/p/6963591.html
Copyright © 2011-2022 走看看