Docker Stack 部署web集群的要领步骤
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-1-425vswwmb8o34uhnmo58w0k4rfzs5okjtye7mokpqps1vl9ymq-0p6pr2gua7l8a6udb67tfndoo 192.168.0.105:2377
这样我们就建好了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 8000 CMD ["./godockerswarm"]
看一下dockerfile 文件所在的文件夹
在这个目录下施行docker build下令:
docker build . -t goweb:1.0
你可以运转一下新生成的镜像
docker run -p 8100:8000 7a7e3
镜像提交到私有仓库
对于怎样搭建私有仓库服务器我这里的就多说了,可以去我以前的帖子看一下
地址:https://www.jb51.net/article/156168.htm
由于集群的上机器是主动从仓库取镜像然后再运转程序,所以需要将我们上面生成的镜像推送到我们的私有仓库上去。我本人搭建的
运用tag从新命名
docker tag goweb:1.0 lpxxn.com:5000/goweb:1.0
推送
docker push lpxxn.com:5000/goweb:1.0
docker-compose文件
接下来创建docker-compose.yml文件
image就是我们上面创建好的镜像。运转5个利用程序,docker会本人做负载,端口映射8111,失败时主动重启服务,并且创建了本人的网络,当有多个server服务时这个非常有用。
里面的具体参数,大家可以看官方教程:
https://docs.docker.com/compose/compose-file/
version: "3" services: web: image: lpxxn.com:5000/goweb:1.0 deploy: replicas: 5 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
以上就是本文的全部内容,但愿对大家的学习有所帮忙,也但愿大家多多支撑脚本之家。