Docker Stack 部署web集群的方法步骤

2020-06-17 07:14:25易采站长站整理

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