千家信息网

怎么设置Docker Swarm

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"怎么设置Docker Swarm",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么设置Docker Swarm"吧!环境我是用了两台ce
千家信息网最后更新 2025年12月03日怎么设置Docker Swarm

本篇内容主要讲解"怎么设置Docker Swarm",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么设置Docker Swarm"吧!

环境

  我是用了两台centos7的虚拟机来做这个教程他们的ip分别是

主服务器:192.168.0.105  // 也是私有仓库服务器服务器2: 192.168.0.49

  这篇帖子中demo代码 github地址:demo 代码

设置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 mainimport (    "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 containerCOPY . /go/src/github.com/lpxxn/godockerswarm/WORKDIR /go/src/github.com/lpxxn/godockerswarm/RUN go buildEXPOSE 8000CMD ["./godockerswarm"]

看一下dockerfile 文件所在的文件夹

你可以运行一下新生成的镜像

docker run -p 8100:8000 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:5000/goweb:1.0

docker-compose 文件

  接下来创建docker-compose.yml文件

image 就是我们上面创建好的镜像。运行5个应用程序,docker 会自己做负载,端口映射8111,失败时自动重启服务,并且创建了自己的网络,当有多个server服务时这个非常有用。

里面的具体参数,大家可以看官方教程:https://docs.docker.com/compose/compose-file/#dockerfile

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:       - gowebnetnetworks:   gowebnet:

部署应用

  到了最后的阶段了,部属一样很简单,执行deploy命令, 在两个IP 上创建好镜像,然后再manager上运行如下指令即可

docker stack deploy -c docker-compose.yml mygoweb
docker service ls  查看servicedocker service rm service_id 删除servicedocker service ps myflask_web  查看servicedocker  node ls  查看节点

查看启动的服务

docker service ps mygoweb_web

测试服务

看这些返回的主机名:不一样吧。docker 为我们做了负载了。

===========================================================================

1.创建dockerfile

FROM python:3.6-alpineCOPY . /codeWORKDIR /codeRUN pip install redis flask

app.py

from flask import Flaskfrom redis import Redisapp = Flask(__name__)i = 1@app.route('/')def hello():    global i    count = i    i += 1    return 'Hello World! 该页面已被访问 {} 次。\n'.format(count)if __name__ == "__main__":    app.run(host="0.0.0.0", debug=True,port=5000)

建立好image

docker build -t app:v1 .

创建集群

manager IP: 192.168.0.105主服务器manager: docker swarm init --advertise-addr 192.168.0.105worker: docker swarm join --token SWMTKN-1-425vswwmb8o34uhnmo58w0k4rfzs5okjtye7mokpqps1vl9ymq-0p6pr2gua7l8a6udb67tfndoo 192.168.0.105:2377这样我们就建好了swarm,两台主机现在建立好了关系

docker-compose.yml

version: '3'services:    web:        image: app:v1        ports:            - "5555:5000"        deploy:            replicas: 2        command:            python /code/app.py
docker stack deploy -c docker-compose.yml myflask 如果你用swarm 连接2 个机器,那么 在manager上运行该语句即可,会自动进行分布式部署跟运行的创建。

到此,相信大家对"怎么设置Docker Swarm"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0