设为首页 收藏本站
查看: 1355|回复: 0

[经验分享] docker-swarm学习

[复制链接]

尚未签到

发表于 2017-12-6 12:44:17 | 显示全部楼层 |阅读模式
  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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421298-1-1.html 上篇帖子: 深刻理解Docker镜像大小 下篇帖子: docker- 构建 oracle2c-r2(12.2.0.1) 的镜像
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表