您需要创建一个 Docker Swarm 集群。您可以使用
docker swarm init
命令在单个节点上启动 Swarm,使用
docker swarm join
命令将其他节点添加到集群中。
一旦您的集群准备就绪,您可以使用
docker service create
命令部署服务。在部署服务时,请确保使用标志公开容器端口。这将允许您从外部访问容器。
要获取容器的 IP 地址,可以使用
docker inspect
命令并过滤输出。例如:
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_id>
这将返回容器的 IP 地址。您也可以使用
docker service ps
命令来获取正在运行的服务的详细信息,包括 IP 地址。
一旦您获得容器的 IP 地址,您就可以使用该地址访问容器提供的服务。请记住,您的容器监听的是内部端口,您可能需要使用端口转发或负载均衡器来访问该服务。
Docker(六):Docker 三剑客之 Docker Swarm
在实践中,企业往往需要部署多个Docker节点来满足生产环境的需求。 搭建Docker集群已成必要。 然而,在众多容器集群系统中,如何选择合适的工具呢?答案是Swarm。 Swarm是Docker原生的集群管理工具,以其简单性、易于学习和节省资源的特点,尤其适合中小型企业使用。 Swarm作为Docker社区的唯一原生集群管理工具,可以将多台Docker主机整合为单一的虚拟Docker主机,从而实现跨主机子网网络。 它提供集群管理和调度能力,帮助IT团队整合集群中的所有Docker Engine,通过单一主Swarm与集群进行沟通,而无需分别与每个Docker Engine进行交互。 借助灵活的调度策略,IT团队可以更高效地管理资源,确保应用容器运行顺畅。 Swarm具有高性能表现,可扩展性强。 无论是5台还是上千台服务器的集群,都能在其环境下高效运行。 经过测试,Swarm在1000个节点上可管理个部署容器,每个容器启动时间亚秒级,性能无损。 Swarm内置的调度器支持多种过滤器,包括节点标签、亲和性以及多种容器部署策略,实现资源优化利用。 Swarm提供高可用性,通过多个Swarm master节点和故障恢复策略确保服务连续可用。 如果一个master节点故障,另一个slave节点将被提升为master,直至故障节点恢复。 此外,Swarm能够处理节点故障,尝试重新调度容器,并提供错误警报和日志记录。 Swarm还与Docker API和整合支持兼容,确保与不同Docker工具无缝对接,包括Docker CLI、Compose、Trusted Registry、Hub和UCP。 Swarm原生支持Docker化应用的核心功能,如多主机网络和存储卷管理。 通过Compose文件,可以轻松地将服务部署到测试服务器或Swarm集群。 Swarm还能从Docker Trusted Registry或Hub拉取并运行镜像。 总之,Swarm提供了一套高效、稳定和兼容的Docker集群管理解决方案,方便调度集群中的Docker容器,合理利用集群主机资源。 然而,并非所有服务都适合部署在Swarm集群内,例如数据库和有状态服务。 在Swarm集群中,每个运行Docker的主机都成为Swarm集群的节点。 节点分为管理节点和工作节点。 管理节点用于集群管理,执行docker swarm命令(除节点退出集群命令docker swarm leave外),而工作节点负责任务执行。 管理节点默认也是工作节点,可以通过配置让服务只运行在管理节点上。 服务在Swarm中分为两种模式,通过docker service create命令中的–mode参数指定。 服务是任务的集合,每个服务定义了任务的属性。 通过docker service命令管理集群中的服务。 创建Swarm集群,首先初始化管理节点,随后添加工作节点。 使用docker swarm init命令初始化集群,并通过Docker Machine创建虚拟主机作为工作节点。 使用docker node ls命令查看集群节点信息,集群包含一个管理节点和两个工作节点。 部署服务时,使用docker service命令管理集群。 创建服务,使用docker service ps命令查看服务进度,docker service ls命令查看当前集群运行的服务。 监控集群状态,通过docker service inspect命令查询服务概要和详细信息,docker service ps命令查看服务在哪个节点运行。 Swarm的弹性伸缩功能强大,允许动态调整服务实例个数。 增加或减少服务实例,查看服务在哪个节点运行。 通过动态调整Swarm集群的工作节点,实现集群大小的调整。 实验显示,Swarm集群可以高效地执行实例上线操作,实现自动化水平扩展,节省资源,避免业务流量波动导致的服务性能下降。 通过对Swarm的学习,企业可以充分感受到自动化水平扩展带来的便利性。 在流量爆发时,只需执行一个命令即可完成实例上线,同时利用自动化控制实现动态伸缩。 这不仅节省了公司资源,还能有效避免业务流量冲击导致的服务性能问题。 Docker凭借容器化技术,为DevOps带来了重要转变,未来容器化技术将更加丰富和完善,智能化运维值得期待。
部署docker swarm集群监控
部署Docker Swarm集群监控的概述现今,尽管Docker Swarm已被Kubernetes超越,但其仍适用于小型团队的容器编排需求。 然而,Docker Swarm面临一个问题:在集群内部署的服务无法获取用户请求的IP地址。 为解决此问题,可以采用InfluxDB、Grafana与Cadvisor的组合方案。 监控方案的核心逻辑包括:Cadvisor负责数据收集,部署于每个节点;InfluxDB用于数据存储;而Grafana则实现数据可视化。 构建演示环境时,将主机分为三部分:master(manager)节点,IP地址为192.168.1.60;两个worker节点,分别为192.168.1.61与192.168.1.62。 master节点将承担监控数据存储与可视化的角色。 初始化Docker Swarm时,在master节点执行`docker swarm init --advertise-addr {MASTER-IP}`命令,然后在每个worker节点上运行提示的`docker swarm join`命令。 使用`docker node ls`命令在master节点查看当前节点列表。 至此,集群搭建完毕,接下来部署监控服务。 通过`docker stack deploy -c monitor`命令在Docker Swarm中部署监控服务。 ``文件包含服务部署的详细配置,可在部署前下载文件进行查看。 部署完毕后,使用`docker service ls`命令确认服务状态。 在master节点上,部署了Grafana和InfluxDB。 同时,每台机器部署一个Cadvisor服务。 为收集数据的Cadvisor服务配置InfluxDB数据库。 通过`docker ps`查看master机器上运行的服务,然后执行`docker logs -f 0bf544c7d81c`命令查看Cadvisor容器日志,确认配置过程。 通过`docker exec docker ps | grep -i influx | awk {print $1} influx -execute CREATE DATABASE cadvisor`命令,在InfluxDB容器中创建名为`cadvisor`的数据库,以匹配Cadvisor服务所需。 随后,配置Grafana以实现数据可视化。 在master节点的IP(例如:192.168.1.60)上直接访问Grafana服务,使用默认账号与密码(admin)登录并设置数据源。 完成数据源配置后,Grafana视图模板将数据以直观形式展现。 至此,基础的Docker Swarm集群监控系统搭建完成。 后续可进一步开发,实现如当CPU值达到特定阈值时,通过钉钉或Slack发送告警等高级功能。 理解监控方案的核心逻辑后,实际部署过程应相对顺利。
如何配置一个 Docker Swarm 原生集群
如何配置一个 Docker Swarm 原生集群嗨,大家好。 今天我们来学一学Swarm相关的内容吧,我们将学习通过Swarm来创建Docker原生集群。 Docker Swarm是用于Docker的原生集群项目,它可以将一个Docker主机池转换成单个的虚拟主机。 Swarm工作于标准的Docker API,所以任何可以和Docker守护进程通信的工具都可以使用Swarm来透明地伸缩到多个主机上。 就像其它Docker项目一样,Swarm遵循“内置电池,并可拆卸”的原则(LCTT 译注:batteries included,内置电池原来是 Python 圈里面对 Python 的一种赞誉,指自给自足,无需外求的丰富环境;but removable,并可拆卸应该指的是非强制耦合)。 它附带有一个开箱即用的简单的后端调度程序,而且作为初始开发套件,也为其开发了一个可插拔不同后端的API。 其目标在于为一些简单的使用情况提供一个平滑的、开箱即用的体验,并且它允许切换为更强大的后端,如Mesos,以用于大规模生产环境部署。 Swarm配置和使用极其简单。 这里给大家提供Swarm 0.2开箱的即用一些特性。 Swarm 0.2.0大约85%与Docker引擎兼容。 它支持资源管理。 它具有一些带有限制和类同功能的高级调度特性。 它支持多个发现后端(hubs,consul,etcd,zookeeper)它使用TLS加密方法进行安全通信和验证。 那么,我们来看一看Swarm的一些相当简单而简用的使用步骤吧。 1. 运行Swarm的先决条件我们必须在所有节点安装Docker 1.4.0或更高版本。 虽然各个节点的IP地址不需要要公共地址,但是Swarm管理器必须可以通过网络访问各个节点。 注意:Swarm当前还处于beta版本,因此功能特性等还有可能发生改变,我们不推荐你在生产环境中使用。 2. 创建Swarm集群现在,我们将通过运行下面的命令来创建Swarm集群。 各个节点都将运行一个swarm节点代理,该代理会注册、监控相关的Docker守护进程,并更新发现后端获取的节点状态。 下面的命令会返回一个唯一的集群ID标记,在启动节点上的Swarm代理时会用到它。 在集群管理器上运行:# docker run swarm createCreating Swarm Cluster3. 启动各个节点上的Docker守护进程我们需要登录进我们将用来创建集群的每个节点,并在其上使用-H标记启动Docker守护进程。 它会保证Swarm管理器能够通过TCP访问到各个节点上的Docker远程API。 要启动Docker守护进程,我们需要在各个节点内部运行以下命令。 # docker -H tcp://0.0.0.0:2375 -dStarting Docker Daemon4. 添加节点在启用Docker守护进程后,我们需要添加Swarm节点到发现服务,我们必须确保节点IP可从Swarm管理器访问到。 要完成该操作,我们需要在各个节点上运行以下命令。 # docker run -d swarm join --addr=<node_ip>:2375 token://<cluster_id>Adding Nodes to Cluster注意:我们需要用步骤2中获取到的节点IP地址和集群ID替换这里的<node_ip>和<cluster_id>。 5. 开启Swarm管理器现在,由于我们已经获得了连接到集群的节点,我们将启动swarm管理器。 我们需要在集群管理器中运行以下命令。 # docker run -d -p <swarm_port>:2375 swarm manage token://<cluster_id>Starting Swarm Manager6. 检查配置一旦管理运行起来后,我们可以通过运行以下命令来检查配置。 # docker -H tcp://<manager_ip:manager_port> infoAccessing Swarm Clusters注意:我们需要替换<manager_ip:manager_port>为运行swarm管理器的主机的IP地址和端口。 7. 使用docker CLI来访问节点在一切都像上面说得那样完美地完成后,这一部分是Docker Swarm最为重要的部分。 我们可以使用Docker CLI来访问节点,并在节点上运行容器。 # docker -H tcp://<manager_ip:manager_port> info# docker -H tcp://<manager_ip:manager_port> run ...8. 监听集群中的节点我们可以使用swarm list命令来获取所有运行中节点的列表。 # docker run --rm swarm list token://<cluster_id>Listing Swarm Nodes尾声Swarm真的是一个有着相当不错的功能的docker,它可以用于创建和管理集群。 它相当易于配置和使用,当我们在它上面使用限制器和类同器时它更为出色。 高级调度程序是一个相当不错的特性,它可以应用过滤器来通过端口、标签、健康状况来排除节点,并且它使用策略来挑选最佳节点。 那么,如果你有任何问题、评论、反馈,请在下面的评论框中写出来吧,好让我们知道哪些材料需要补充或改进。 谢谢大家了!尽情享受吧 :-)Ubuntu 15.04下安装Docker配置 Docker 镜像下载的本地 mirror 服务安装应用(CentOS 6.5_x64)在 Docker 中使用 MySQL在Ubuntu Trusty 14.04 (LTS) (64-bit)安装DockerDocker安装应用(CentOS 6.5_x64)Ubuntu 14.04安装Docker阿里云CentOS 6.5 模板上安装 Docker