如何调用docker swarm service的API来创建及更新服务

简介: 平衡的推进,先作一个原型吧。 #!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json #定义docker swarm的管理节点ip,端口号,API版本,服务名, 服务URL #在后期集...

平衡的推进,先作一个原型吧。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import json

#定义docker swarm的管理节点ip,端口号,API版本,服务名, 服务URL
#在后期集成到自动化部署时,需要精简数据结构,完善data, 增加精准判断及空间回收
#API更多用途参考: https://docs.docker.com/engine/api/v1.29/
docker_swarm_ip_port = "ip:port"
docker_swarm_api_version = "v1.29"
docker_swarm_service_name = "tomcatbv"

get_service_url = "http://%s/%s/services/%s" %(docker_swarm_ip_port, docker_swarm_api_version, docker_swarm_service_name)

data = {
  "Name": "tomcatbv",
  "TaskTemplate": {
    "ContainerSpec": {
      "Image": "harbor_op/project_name/tomcat:20170620demo",
    },
    "Placement": {},
    "RestartPolicy": {
      "Condition": "on-failure",
      "Delay": 10000000000,
      "MaxAttempts": 10
    }
  },
  "Mode": {
    "Replicated": {
      "Replicas": 1
    }
  },
  "UpdateConfig": {
    "Parallelism": 2,
    "FailureAction": "pause",
  },
  "RollbackConfig": {
    "Parallelism": 1,
  },
  "Labels": {
    "foo": "bar"
  }
}


#创建docker swarm service服务
def create_service():
    url = "http://%s/%s/services/create" %(docker_swarm_ip_port, docker_swarm_api_version)
    data_json = json.dumps(data)
    r = requests.post(url, data=data_json)
    print r.text
    if r.status_code == 201:
        print "created ok"
    else:
        print "create error"
        sys.exit()

#更新docker swarm service服务
def update_service(version_index):
    url = "http://%s/%s/services/%s/update?version=%s" %(docker_swarm_ip_port, docker_swarm_api_version, docker_swarm_service_name, version_index)
    data_json = json.dumps(data)
    r = requests.post(url, data=data_json)
    print version_index, r.text, r.status_code
    if r.status_code == 200:
        print "updated ok"
    else:
        print "update error"
        sys.exit()

def main():
    get_service_url = "http://%s/%s/services/%s" %(docker_swarm_ip_port, docker_swarm_api_version, docker_swarm_service_name)
    r = requests.get(get_service_url)
    print get_service_url, r.status_code, r.text
    if r.status_code != 200:
        create_service()
    else:
        version_index = eval(r.text)["Version"]["Index"]
        update_service(version_index)
    

if __name__ == "__main__":
    main()

目录
相关文章
|
1月前
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
68 8
|
1月前
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
122 8
|
1月前
|
调度 开发者 Docker
Docker Swarm
Docker Swarm 为容器化应用的部署和管理提供了一种高效、可靠的方式,使开发者能够更轻松地构建和运行分布式应用。随着容器技术的不断发展,Docker Swarm 在企业级应用中的应用也将越来越广泛。
58 8
|
1月前
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
59 6
|
2月前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
103 2
|
2月前
|
Kubernetes 负载均衡 调度
Docker Swarm 核心概念及详细使用
Docker Swarm 是 Docker 的原生集群管理工具,用于将多个 Docker 主机整合成一个虚拟主机,提供集群管理和调度功能。其核心特点包括集群管理、容错与高可用性、负载均衡、声明式服务模型、服务发现和安全性。本文档详细介绍了 Docker Swarm 的安装配置、服务部署、节点管理、网络配置及故障模拟等关键操作,适用于中小型项目或对 Kubernetes 复杂性有所顾虑的用户。
150 6
|
2月前
|
应用服务中间件 nginx Docker
Docker Swarm、Docker Stack和Portainer的使用
Docker Swarm、Docker Stack 和 Portainer 各有其独特的功能和优势。Docker Swarm 适用于分布式服务的管理和编排,Docker Stack 便于多容器应用的定义和部署,而 Portainer 提供了直观的 UI,简化了 Docker 环境的管理。结合使用这些工具,可以大大提高容器化应用的部署和管理效率。希望本文对您理解和应用这些工具有所帮助。
164 5
|
3月前
|
负载均衡 应用服务中间件 网络安全
docker swarm添加更多的服务
【10月更文挑战第16天】
39 6
|
3月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
58 5
|
3月前
|
调度 Docker 容器
docker swarm创建覆盖网络
【10月更文挑战第16天】
60 5

热门文章

最新文章