怎么设置DockerSwarm

本篇内容主要讲解“怎么设置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的命令

 怎么设置Docker Swarm

在192.168.0.49上执行命令加入swarm

docker swarm join --token SWMTKN-1-425vswwmb8o34uhnmo58w0k4rfzs5okjtye7mokpqps1vl9ymq-0p6pr2gua7l8a6udb67tfndoo 192.168.0.105:2377

 怎么设置Docker Swarm

这样我们就建好了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 Swarm

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

docker run -p 8100:8000 7a7e3

怎么设置Docker Swarm

镜像提交到私有仓库

关于如何搭建私有仓库服务器我这里的就多说了,可以去我之前的帖子看一下

地址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 Swarm

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

部署应用

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

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

怎么设置Docker Swarm

查看启动的服务

docker service ps mygoweb_web

怎么设置Docker Swarm

测试服务

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

 怎么设置Docker Swarm

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

1.创建dockerfile

FROM python:3.6-alpine
COPY . /code
WORKDIR /code
RUN pip install redis flask

app.py

from flask import Flask
from redis import Redis
app = 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.105
worker: 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”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享名称:怎么设置DockerSwarm
分享地址:http://ybzwz.com/article/ggssej.html