centos docker swarm(容器内执行docker命令)
这篇文章给大家聊聊关于centos docker swarm,以及容器内执行docker命令对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
使用Portainer的Agent模式管理DockerSwarm集群
本文将深入探讨如何在一个四节点规模的Docker Swarm集群上,使用Portainer的Agent模式进行集群管理。我们的目标是在CentOS7系统上,确保所有节点的防火墙规则正确设置,以便于集群服务和端口的访问。在搭建好Docker Swarm集群后,我们将详细说明如何安装Portainer,并使用Agent模式进行集群管理。
首先,确保集群中的四个节点(两个manager节点,两个worker节点)操作系统为CentOS7,防火墙为firewalld。在生产环境下,应规划好各节点允许的访问服务和端口。通常,用于web服务访问的http/https,以及Docker Swarm所需的端口/协议(2375/tcp,2376/tcp,2377/tcp,4789/udp,7946/tcp,7946/udp)和Portainer的9001/tcp端口,都是必需的。
在已搭建的Docker Swarm集群上,我们选择一个manager节点进行Portainer的安装。首先,添加防火墙规则,允许访问9000端口,以确保Portainer可以在该节点上正常运行。Portainer在集群中仅需在一个manager节点上运行,无需高可用配置,因为它主要用于集群运维管理,数据存储在宿主机的/docker/data/portainer目录中,并且指定了重启策略。通过浏览器访问Portainer,首次访问时需创建管理员用户,随后等待portainer_agent服务启动,此时可继续进行操作。
使用Agent模式管理Docker Swarm集群时,需要创建名为portainer_agent的服务。服务配置模式为global,意味着在所有active节点上启动对应的Docker容器;约束条件为node.platform.os== linux,确保服务仅在Linux节点上运行。通过manager节点执行docker service ls和各个节点上执行docker ps命令,可以查看服务和容器是否成功启动。登入Portainer管理界面,通过添加Agent作为Swarm集群的统一EndPoint来完成最后的配置。设置Name和Agent URL,填写格式为tasks.portainer_agent:9001,这是由之前创建的portainer_agent服务决定的默认访问端口。
本文还探讨了安装Portainer与Agent的其他方法。例如,可以将Portainer作为服务启动,或者将Portainer与Agent服务整合到一个docker-compose编排文件中,使用docker compose或docker stack进行统一管理。创建编排文件(如portainer-agent-stack.yml),定义服务,并使用docker compose或docker stack命令启动。
关于如何搭建Docker Swarm集群的详细步骤,本文将不会深入讲解,但会提供一些关键的注意事项。例如,可以使用route命令查看本地路由表,以确保实际网段正确配置,保证集群服务之间的通信。
部署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 docker-compose-monitor.yml monitor`命令在Docker Swarm中部署监控服务。`docker-compose-monitor.yml`文件包含服务部署的详细配置,可在部署前下载文件进行查看。
部署完毕后,使用`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 create
Creating Swarm Cluster
3.启动各个节点上的Docker守护进程
我们需要登录进我们将用来创建集群的每个节点,并在其上使用-H标记启动Docker守护进程。它会保证Swarm管理器能够通过TCP访问到各个节点上的Docker远程API。要启动Docker守护进程,我们需要在各个节点内部运行以下命令。
# docker-H tcp://0.0.0.0:2375-d
Starting Docker Daemon
4.添加节点
在启用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 Manager
6.检查配置
一旦管理运行起来后,我们可以通过运行以下命令来检查配置。
# docker-H tcp://<manager_ip:manager_port> info
Accessing 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服务
Docker安装应用(CentOS 6.5_x64)
在 Docker中使用 MySQL
在Ubuntu Trusty 14.04(LTS)(64-bit)安装Docker
Docker安装应用(CentOS 6.5_x64)
Ubuntu 14.04安装Docker
阿里云CentOS 6.5模板上安装 Docker