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

 更新时间:2019年02月13日 09:46:58   作者:lpxxn  
这篇文章主要介绍了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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 三款Docker图形化工具优缺点对比

    三款Docker图形化工具优缺点对比

    大家好,本篇文章主要讲的是三款Docker图形化工具优缺点对比,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • docker私有仓库Harbor配置

    docker私有仓库Harbor配置

    本文主要介绍了在openEuler或rockylinux上配置docker私有仓库Harbor,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Docker修改容器内部文件的三种方法

    Docker修改容器内部文件的三种方法

    今天在修改Docker内部文件的时候,安装vim居然失败了,在执行apt-get update时一直有几个404,解决无果,最后放弃安装vim,将文件拷贝出来修改,所以本文给大家分享一下如何修改Docker内部文件的方法,需要的朋友可以参考下
    2024-01-01
  • Docker创建openresty容器的实现步骤

    Docker创建openresty容器的实现步骤

    OpenResty可以用来构建高性能的Web应用和服务,本文主要介绍了Docker创建openresty容器的实现步骤,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • Docker安装ollama过程解读

    Docker安装ollama过程解读

    Ollama是一个开源的LLM服务工具,用于简化在本地运行大语言模型,本文介绍了如何使用Docker安装Ollama并运行大语言模型,包括拉取镜像、运行容器和加载模型,最后,还介绍了如何安装OpenWebUI进行Web界面交互
    2025-02-02
  • Docker部署rabbitmq遇到的两个问题

    Docker部署rabbitmq遇到的两个问题

    当使用docker部署rabbitmq时遇到两个问题,访问交换机时报错,另一种是访问channel时报错,本文给大家分享解决方案,感兴趣的朋友跟随小编一起看看吧
    2021-07-07
  • 详解docker pull 下来的镜像都存到了哪里

    详解docker pull 下来的镜像都存到了哪里

    这篇文章主要介绍了详解docker pull 下来的镜像都存到了哪里,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Docker拉取镜像过慢解决方法

    Docker拉取镜像过慢解决方法

    这篇文章主要给大家介绍了关于Docker拉取镜像过慢的解决方法,如果在拉取Docker镜像时遇到速度较慢的问题可以参考本文的办法,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 使用Docker安装部署MySQL和Redis的详细过程

    使用Docker安装部署MySQL和Redis的详细过程

    这篇文章主要介绍了使用Docker安装部署MySQL和Redis,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 基于Harbor构建docker私有仓库的方法

    基于Harbor构建docker私有仓库的方法

    这篇文章主要介绍了Harbor构建docker私有仓库的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论