这个需求的起源是,算法需要与MySQL数据库交互,部署镜像后发现,当mysql的ip发生变化时,算法文件就要相应的修改mysql的访问ip,觉得这样很麻烦,所以调研了一下。
1. docker swarm 网络
1.1 简介
swarm是docker的容器编排工具,可以进行容器启动、停止、复制、状态监控等操作。
swarm集群包括:
- 管理节点Manager
- 工作节点Worker
swarm 中的最小的调度单位是Task,一个Task是一个容器。
service一般是由一组相同的Task组成。
1.2 初始化集群
# 初始化集群,指定当前节点为manager
docker swarm init
# 列出当前节点
docker node ls
1.3 创建网络
路由网格:该模式下服务暴露的端口会暴露在 Swarm 集群中的所有工作节点,通过访问任何一台主机的ip、域名加暴露的端口号就可以访问到该服务。
# 创建
docker network create --driver overlay mysql_net
# 查看
# “ingress”覆盖网络则为默认提供
docker network ls
1.4 创建服务
根据mysql镜像创建一个名为mysql的服务,该服务包含1个副本,服务映射到主机的3306端口供外部访问。
docker service create --network mysql_net --replicas 1 -p 3306:3306 --name mysql docker.io/mysql:latest