• ubuntu 安装 docker swarm 集群


    1. systemctl stop firewalld(关闭防火墙)
    2. systemctl disable firewalld(开启不开启防火墙)

    安装 docker 就已经安装了docker swam )

    https://docs.docker.com/engine/install/
    1. apt-get remove docker docker-engine docker.io containerd runc
    2. apt-get update
    3. apt-get install \
    4. apt-transport-https \
    5. ca-certificates \
    6. curl \
    7. gnupg-agent \
    8. software-properties-common
    9. sudo add-apt-repository \
    10. "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
    11. $(lsb_release -cs) \
    12. stable"
    13. apt-get update
    14. apt-get install docker-ce docker-ce-cli containerd.io

    安装 dockert-compose 去  Releases · docker/compose (github.com) 找需要的版本

    1. sudo curl -L https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
    2. sudo chmod +x /usr/local/bin/docker-compose
    3. docker-compose --version

    安装Docker Machine   Releases · docker/machine (github.com)

    1. curl -L https://ghproxy.com/https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \
    2. chmod +x /usr/local/bin/docker-machine

    1. docker swarm:集群管理,子命令有 init, join,join-token, leave, update
    2. docker node:节点管理,子命令有 demote, inspect,ls, promote, rm, ps, update
    3. docker service:服务管理,子命令有 create, inspect, ps, ls ,rm , scale, update
    4. docker stack/deploy:试验特性,用于多应用部署,等正式版加进来再说。

    Docker Swarm 入门一篇文章就够了 - 简书

    docker 组件安装好了,现在搭建集群

    1. docker-machine create --driver virtualbox manager1
    2. docker-machine env manager1
    3. export DOCKER_TLS_VERIFY="1"
    4. export DOCKER_HOST="tcp://192.168.99.100:2376"
    5. export DOCKER_CERT_PATH="/home/zuolan/.docker/machine/machines/manager1"
    6. export DOCKER_MACHINE_NAME="manager1"
    7. # Run this command to configure your shell:
    8. # eval $(docker-machine env manager1)
    9. -----
    10. docker-machine create --driver virtualbox worker1
    11. docker-machine ls
    12. 把 manager1 加入集群
    13. docker-machine ssh manager1 docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100
    14. docker swarm join \
    15. --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
    16. 192.168.99.100:2377
    17. 把 work1 加入集群
    18. docker-machine ssh worker1 docker swarm join --token \
    19. SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
    20. 192.168.99.100:2377
    21. docker-machine ssh manager1 docker node ls
    22. 此时 manager1 worker1
    23. 加 worker2 到集群
    24. docker-machine ssh worker2 docker swarm join \
    25. --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
    26. 192.168.99.100:2377
    27. 添加 worker3 到集群
    28. docker-machine ssh worker3 docker swarm join \
    29. --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
    30. 192.168.99.100:2377
    31. 添加 manager2 到集群
    32. docker-machine ssh manager1 docker swarm join-token manager 查看token
    33. docker swarm join \
    34. --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-8tn855hkjdb6usrblo9iu700o \
    35. 192.168.99.100:2377
    36. docker-machine ssh manager2 docker swarm join \
    37. --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-8tn855hkjdb6usrblo9iu700o \
    38. 192.168.99.100:2377
    39. manager2 docker node ls
    40. 此时: manager1/2 worker1/2/3

    如果提示: 

    apt install virtualbox

    如果提示:

     (1)virtualbox 

     如果为灰色,找到命令行执行下就可以

    c:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyvm "Ubuntu" --nested-hw-virt on

    (2)vmvare 

    如果下面报错:

     

    建立跨主机网络

    1. docker swarm join \
    2. --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-8tn855hkjdb6usrblo9iu700o \
    3. 192.168.99.100:2377

    docker node ls。(1台宿主机 5台虚拟机)

    会多显示一条

     
    docker network ls 查看网络状态

    可以看到在 swarm 上默认已有一个名为 ingress 的 overlay 网络, 默认在 swarm 里使用,本例子中会创建一个新的 overlay 网络。

    docker network create --driver overlay swarm_test

    在跨主机网络上部署应用

    1. 分别在五个虚拟机节点拉取 nginx:alpine 镜像
    2. docker-machine ssh manager1 docker pull reg.example.com/library/nginx:alpine
    3. 在五个节点部署一组 Nginx 服务
    4. docker service create --replicas 2 --name helloworld --network=swarm_test nginx:alpine
    5. docker service ls 查看服务状态
    6. docker service ps helloworld 查看 helloworld 服务详情
    7. docker-machine ssh manager1 docker ps -a
    8. docker-machine ssh worker2 docker ps -a
    9. 首先使用 Machine 进入 manager1 节点,然后使用 docker exec -i 命令进入 helloworld.1 容器中 ping 运行在 worker2 节点的 helloworld.2 容器。
    10. docker-machine ssh manager1 docker exec -i helloworld.1.ay081uome3eejeg4mspa8pdlx
    11. ping helloworld.2.16cvore0c96rby1vp0sny3mvt
    12. 可以看到这两个跨主机的服务集群里面各个容器是可以互相连接的。
    13. 我们使用了虚拟机内部的 ping 去测试容器的延迟,可以看到延迟明显比集群内部的 ping 值要高。

    Swarm 集群负载

    1. docker service rm helloworld 删掉上一节我们启动的 helloworld 服务
    2. docker service create --replicas 2 --name helloworld -p 7080:80 --network=swarm_test nginx:alpine 部署
    3. docker service ls 查看服务运行状态
    4. 现在我们来看 Swarm 另一个有趣的功能,当我们杀死其中一个节点时,会发生什么?
    5. docker-machine ssh worker2 docker kill helloworld.2.7acmhj0udzusv1d7lu2tbuhu4 kill 掉 worker2 的实例
    6. docker service ps helloworld 稍等几秒,再来看服务状态:
    7. Swarm 也会迅速把停止的容器撤下来,同时在节点中启动一个新的实例顶上来 , 这样服务依旧还是两个实例在运行。
    8. docker service scale helloworld=3 扩容

  • 相关阅读:
    k8s集群配置
    Codeforces 1878G 枚举 + 树上倍增
    2023年合肥市青少年信息学科普日活动(初中组)
    SpringBoot常见异步编程,你会多少?
    ​​植物大战僵尸杂交版直装版v2.1 安卓版:全新策略塔防体验
    面试、工作中常用sql大全(建议收藏备用)
    leetcode 1222. 可以攻击国王的皇后(每日一题)
    【LeetCode-面试经典150题-day20】
    利用C++开发一个迷你的英文单词录入和测试小程序-源码
    Remix 开发小技巧(三)
  • 原文地址:https://blog.csdn.net/Allure_LoveU/article/details/125408447