Docker Stack 集群部属服务
Docker越来越成熟,功能也越来越强大。使用Dokcer Stack做服务集群也是非常的方便,docker 自己就提供了负载功能,感觉很方便,就想给大家分享一下,做一个简单的教程。
环境
我是用了两台centos7的虚拟机来做这个教程他们的ip分别是
主服务器:192.168.0.105 // 也是私有仓库服务器
服务器2: 192.168.0.49
这篇帖子中所有的代码 github地址:https://github.com/lpxxn/godockerswarm
设置Docker Swarm
我以192.168.0.105做为主服务器,在他上面开启swarm
docker swarm init
执行命令后会给出加入这个swarm的命令
在192.168.0.49上执行命令加入swarm
docker swarm join --token SWMTKN--425vswwmb8o34uhnmo58w0k4rfzs5okjtye7mokpqps1vl9ymq-0p6pr2gua7l8a6udb67tfndoo 192.168.0.105:
这样我们就建好了swarm,两台主机现在建立好了关系。
web服务
web服务是用go语言写一个简单的接口,返回主机的名称:这样方便我们查看是否有负载
package main import (
"fmt"
"log"
"net/http"
"os"
) func main() {
http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request) {
hostName, _ := os.Hostname()
fmt.Fprintf(w, "HostName: %s", hostName)
}) log.Fatal(http.ListenAndServe(":8000", nil))
}
Docker file
看一下dockerfile 文件:
执行的意思就是基于golang境像,把代码复制到相应文件夹,暴露出端口,运行程序。简单吧
FROM golang # Copy the current directory contents into the container
COPY . /go/src/github.com/lpxxn/godockerswarm/ WORKDIR /go/src/github.com/lpxxn/godockerswarm/ RUN go build EXPOSE CMD ["./godockerswarm"]
看一下dockerfile 文件所在的文件夹
在这个目录下执行docker build 命令:
docker build . -t goweb:1.0
你可以运行一下新生成的镜像
docker run -p : 7a7e3
镜像提交到私有仓库
关于如何搭建私有仓库服务器我这里的就多说了,可以去我之前的帖子看一下
地址1:http://www.cnblogs.com/li-peng/p/6511331.html
地址2:https://yq.aliyun.com/articles/303216?spm=5176.8091938.0.0.2ce387dadknIQu
也可以用harbor自己搭建,这个我还没有做过教程,有时间再写。
因为集群的上机器是自动从仓库取镜像然后再运行程序,所以需要将我们上面生成的镜像推送到我们的私有仓库上去。我自己搭建的
使用tag重新命名
docker tag goweb:1.0 lpxxn.com:/goweb:1.0
推送
docker push lpxxn.com:/goweb:1.0
docker-compose 文件
接下来创建docker-compose.yml文件
image 就是我们上面创建好的镜像。运行5个应用程序,docker 会自己做负载,端口映射8111,失败时自动重启服务,并且创建了自己的网络,当有多个server服务时这个非常有用。
里面的具体参数,大家可以看官方教程:
https://docs.docker.com/compose/compose-file/#dockerfile
version: ""
services:
web:
image: lpxxn.com:/goweb:1.0
deploy:
replicas:
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "8111:8000"
networks:
- gowebnet
networks:
gowebnet:
部署应用
到了最后的阶段了,部属一样很简单,执行deploy命令
docker stack deploy -c docker-compose.yml mygoweb
查看启动的服务
docker service ps mygoweb
测试服务
看这些返回的主机名:不一样吧。docker 为我们做了负载了。
这篇帖子中所有的代码 github地址:https://github.com/lpxxn/godockerswarm
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan
Docker Stack 集群部属服务的更多相关文章
- 使用 Istio CNI 支持强安全 TKE Stack 集群的服务网格流量捕获
作者 陈计节,企业应用云原生架构师,在腾讯企业 IT 负责云原生应用治理产品的设计与研发工作,主要研究利用容器集群和服务网格等云原生实践模式降低微服务开发与治理门槛并提升运营效率. 摘要 给需要快速解 ...
- Docker 0x13: Docker 构建集群/服务/Compose/分布式服务栈
目录 Docker 构建集群/服务/Compose/分布式服务栈 集群 初始化集群服务 安装docker-machine 管理节点和工作节点 docker集群构建完成 集群中部署应用 集群服务访问特性 ...
- 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障
3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...
- Docker Swarm 集群环境搭建及弹性服务部署
上一篇文章<Docker Swarm 集群管理利器核心概念扫盲>中我们把 Swarm 重要的概念性知识给大家讲解了一波,理论完事就该实战了,这篇文章带大家从零开始,搭建 Docker Sw ...
- Docker容器集群管理之Swarm
Docker容器集群管理主流方案 Swarm Docker公司自研发的集群管理系统. Kubernetes Google开源的一个容器集群管理系统,用于自动化部署.扩展和管理容器应用.也称为K8S ...
- Docker Swarm——集群管理
前言 之前在总结docker machine的时候,当时对docker理解还不够深入,甚至还不知道 docker machine 与 docker swarm 的区别. 在查阅资料以及官方文档之后,今 ...
- 通过docker-machine和etcd部署docker swarm集群
本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...
- Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
目录 [TOC] 1.环境准备 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...
- Docker Swarm集群
Docker Swarm集群 IP 10.6.17.11 管理节点 IP 10.6.17.12 节点A IP 10.6.17.13 节点B IP 10.6.17.14 节点C 安装 Sw ...
随机推荐
- 5)C语言函数(C自考学习)
函数的概念 在一个程序中,如果在不同地点多次执行某项操作,就可以把完成这项操作的程序段从程序中独立出来,定义成函数,而原来程序中凡需要进行这个操作的程序段可以只用"函数调用"来替代 ...
- 4)C语言指针(C自考学习)
指针和指针变量 指针就是地址,地址是一种数据类型.指针变量也是变量,但只能存放地址类型的数据,可以称为"地址型"变量. 1)内存单元和地址 一个程序运行时,程序本身和程序中用到的数 ...
- python基础教程——切片
获取list或tuple的部分元素: L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] L[0:3] ['Michael', 'Sarah', 'Tra ...
- Python网络编程篇之socketserver
1.socketserver模块和类 socketserver是标准库中的一个高级模块,目标是简化很多样板代码(创建网络客户端和服务器所必须的代码) 这个模块封装了socket编程所需要的各种各样的类 ...
- 利用docker搭建spark hadoop workbench
目的 用docker实现所有服务 在spark-notebook中编写Scala代码,实时提交到spark集群中运行 在HDFS中存储数据文件,spark-notebook中直接读取 组件 Spark ...
- 从CentOS安装完成到生成词云python学习日记
欢迎访问我的个人博客:原文链接 前言 人生苦短,我用python.学习python怎么能不搞一下词云呢是不是(ง •̀_•́)ง 于是便有了这篇边实践边记录的笔记. 环境:VMware 12pro + ...
- 自学python笔记(一)
一 简介:Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言.其他的就不说了..... python是 ...
- H5+JS+JQuery+ECharts实现异步加载
这几天,看了一下ECharts官网的API和Demo发现很有意思,于是就利用模型预测产生的数据做一个伪实时的动态数据显示 . 首先,创建一个index.html的文件,我用的vscode打开的,进行编 ...
- win7及以上系统打开chm空白或显示"无法打开"的2个解决方案
1:在文件上右键单击属性.选择解锁. 2:确保文件路径中没有特殊字符.比如"#".如果路径中存在特殊字符,chm文件可能找不到路径而无法显示.如 d:\资料\c#\***.chm. ...
- RabbitMQ Cluster群集安装配置
#RabbitMQ Cluster群集安装配置 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ########## ...