Docker系列(七):Docker图形化管理和监控
Docker管理工具之官方三剑客
Docker Machine是什么鬼
从前 现在
你需要登录主机,按照主机及操作系统特有的安装以及配置步骤安装Docker,使其 能运行Docker容器。
Docker Machine的产生简化了这一过程,让你可以使用一条命令在你的计算机,公有云 平台以及私有数据中心创建及管理Docker主机。
Create Docker Machine主要包括三个Create过程。
• 首先是Provider Create(libmachine/provider.go),此函数主要是在当前运行docker-machine命令主机上创建
以machine name命名的文件夹,并将根证书,服务器证书以及用户证书拷贝到此文件夹。
• 其次是Driver create(例如drivers/virtualbox/virtualbox.go)用来创建主机,
• 最后是运行Host create(libmachine/host.go)通过SSH安装并配置Docker。目前在本地环境中使用的是
boot2docker镜像,云端环境使用的是Ubuntu镜像。
其实真相是这样的:自动创建一个虚机并且安装好设置好Docker Engine
Docker Machine简化了部署的复杂度,无论是在本机的虚拟机上还是在公有云平台,只需要一条命令便可搭 建好Docker主机
• Docker Machine提供了多平台多Docker主机的集中管理
• Docker Machine 使应用由本地迁移到云端变得简单,只需要修改一下环境变量即可和任意Docker主机通信 部署应用。
为什么会有Docker Compose
微服务&规模
Openstack Heat
与容器技术同样受到关注的微服务架构也在潜移默化的改变着应用的部署方式,其提倡将应用分割成一系列细小 的服务,每个服务专注于单一业务功能,服务之间采用轻量级通信机制相互沟通
Docker Swarm (类似k8s)
在很长的一段时间内,Docker只能在单host上运行,其跨host的部署、运行与管理能力颇受外界诟病。跨host能 力的薄弱,直接导致Docker容器与host的紧耦合,这种情况下,Docker容器的灵活性很难令人满意,容器的迁移、 分组等都成为很难实现的功能点。Swarm发布于2014年12月,以管理Docker集群,并将其抽象为一个虚拟整体 暴露给用户,其架构以及命令比较简单。
Swarm作为一个管理Docker集群的工具,可以单独部署于 一个节点。
Swarm的具体工作流程:Docker Client发送请求给Swarm ;Swarm处理请求并发送至相应的Docker Node;Docker Node执行相应的操作并返回响应。
1.运行一个命令去创建一个集群. 2.运行另一个命令去启动Swarm.
3.在运行有Docker Engine的每个主机上,运行一个命令与 上面的集群相连
在某些点, Swarm将可以在主机故障时重调度容器. Swarm可以很好地与第三方容器编配产品和运供应商提供
的编配服务整合,如Mesos
可以看到server和docker node中的tcp是一样的。存在一个调度的关系
swarm则将一组docker enginge作为一个集群进行管理,并提供过了lablel,schedule,filter的能力。 其中调度部分,允许用户定制自己的调度策略。
1.docker run -e “constraint:operationsystem=fedora”
2.docker run -e “constraint:storagedriver=aufs”
Docker Compose是什么鬼 (类似openstack)
Docker Compose将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr)。
一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容 器实例,Docker Compose并没有解决负载均衡的问题,因此需要借助其他工具实现服务发现及负载均衡。
Docker Compose中定义构建的镜像只存在在一台Docker Swarm主机上,无法做到多主机共享
Docker管理工具——Tutum(官方收费)
Docker管理工具——shipyard(开源、活跃)
所有需要纳管的Docker主机,需要让Docker在TCP上监听,以便被纳管 OPTIONS=-H=unix:///var/run/docker.sock -H=tcp://0.0.0.0:2375
安装shipyard
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ shipyard/deploy start
运行:
浏览器访问物理机的8080端口:http://192.168.131.134:8080/ 默认用户名密码:admin/shipyard,,点击Engines标签页 添加一个Docker主机(Engine):
填写Docker 主机的名字、CPU核心数、内存数量(单位MB)、以及Labels,比如部署Web的标签为web,以后 调度容器的时候,会优先调度到相应的标签。
创建成功后,列表页面显示Docker主机的版本信息:
如果添加失败,则需要排除是否端口不可访问,可以用wget/telnet/curl等方式来排查问题,下面截图是在 另外主机上Telnet Docker 2375端口看是否能连接:
Containers标签页显示了所有的Docker容器,可以按照Engine(主机)排序,目前还没有分页和查询功能。
点击Container标签页的Deploy按钮,可以启动新的容器:
容器的镜像,名称,环境变量,启动参数,是否有Volume存储、是否有端口映射等都可以在界面上定义。启动成功以后,可以看到列表中新容器的状态为RUNNING:
点击容器的链接,可以看到容器的细节信息,如端口、CPU占用、内存占用、环境变量、重启策略等,还可以重 启、停止、销毁容器或者查看容器日志。
如果容器启动失败,或者排查问题,则可以查看容器的日志信息:
Docker管理工具——cAdvisor
cAdvisor的监控图默认1秒刷新一次,显示最近一分钟的实时数据,不显示汇聚的和历史数据, 也没有阀值告警功能,此外它也无法同时监控多个Docker主机,不过由于其简单方便,并且具备 很好的实时性能监控能力,所以适合特殊情况下的性能监控和问题排查。
google的cAdvisor,免费开源,实施简单,每个Docker主机上启动一个容器即可通过Web端口监控,
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro – volume=/var/lib/docker/:/var/lib/docker:ro --publish=8082:8082 --detach=true --name=cadvisor google/cadvisor:latest --port=8082
上述部分参数可能与主机操作系统有关,需要修改,可参照官方文档:https://github.com/google/cadvisor 由于shipyard是在本机8080端口运行,因此上面把cAdvisor改为了8082端口,运行起来后,访问本机8082端口,可
看到监控界面:
显示了当前活动的容器的磁盘占用情况
Docker系列(七):Docker图形化管理和监控的更多相关文章
- 【Docker学习之七】Docker图形化管理和监控
环境 docker-ce-19.03.1-3.el7.x86_64 centos 7 一.Docker管理工具 (官方三剑客)1.Docker Machine(学习的Openstack Heat)Cr ...
- docker 添加Portainer容器图形化管理工具
主要参照了这边博客,但还是有些问题https://www.cnblogs.com/Bug-Hunter/p/12023130.html 比如端口9000得开启,docker端口映射得开启,得开启ip4 ...
- docker图形化管理工具portainer
本章主要介绍docker的web图形化管理工具.这里使用 portainer(类似与dockui不过dockerui只支持单节点) 镜像名称 portainer/portainer 一.启动porta ...
- 6、Docker图形化管理(Portainer)
一.Portainer简介 Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控 ...
- 『现学现忘』Docker基础 — 24、Docker图形化管理工具Portainer
目录 1.Portainer介绍 2.Portainer安装启动 3.Portainer初始化配置 4.Portainer汉化 1.Portainer介绍 (1)Portainer 是一款轻量级的图形 ...
- KONG -- 图形化管理(Kong Dashboard)
前面安装的 KONG 的版本是社区版的 1.0.2,官方的 KONG Manager 好像只有企业版才提供.在 github 上找了一个开源的图形化管理应用 -- Kong Dashboard (ht ...
- 数据库--oracle图形化管理工具和新增自定义用户
oracle数据库图形化管理工具: 1 navicat工具很小,操作mySQL和SQLServer非常好用,但对于oracle体验性就有点差,要自己下载编码和替换oci文件.下面是解决的方法教程链接 ...
- 常用MySQL图形化管理工具
MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据 ...
- 有评论就是我最大的动力~MySQL基础篇完结(存储引擎和图形化管理工具)
hi 今天登上来,发现竟然有了3个评论~~加油吧! 这周的计划其实远远没有达到,然后下周还有一大堆事情...那么...周末好好玩吧~ 今天试图完结MySQL的基础篇知识,小白变为大白? 1.MySQL ...
随机推荐
- vue之父子组件执行对方的方法
一.子组件执行父组件中的方法 1.父组件将方法名传给子组件,子组件进行调用 父组件中: <Vbutton typeBtn="success" :btnUserMethod=& ...
- 基于 CI 1.7.x 的 项目使用新版本CI的文件缓存类库
维护的项目使用的是 codeigniter 1.7.x版本,但是我想使用文件缓存,但是旧版本是没有缓存类库的,并且autoload.php没有drivers这个配置项. 我复制的是 Codeignit ...
- jquery获取select选中项 自定义属性的值
<select id="serialNo" > <option value=''1' data-id="001">第一次</opt ...
- Python语法学习记录之tuple该如何使用?
一.介绍 dict 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明: 下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性. 每一个元素是pa ...
- leetcood学习笔记-203-移除链表元素
题目描述: 方法:#在改pre链表时 head中的值也改变 class Solution(object): def removeElements(self, head, val): "&qu ...
- JAVA 调用c++ 扩展 批评那些垃圾,
//本人喜欢用命令行的方式,这样好理解原理 { 1 生成的要是X64 并且是release版本 不要预编译头的dll项目,就是创建的时是一个空dll项目 2 java 调用时要import com.m ...
- NX二次开发-UFUN求两个向量的叉乘UF_VEC3_cross
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_vec.h> #include <uf_ ...
- AtCoder ABC 127F Absolute Minima
题目链接:https://atcoder.jp/contests/abc127/tasks/abc127_f 题目大意 初始状态下$f(x) = 0$,现在有 2 种模式的询问,第一种以“1 a b” ...
- L1正则化可以解决过拟合问题(稀疏解)
损失函数最小,也就是求极值点,也就是损失函数导数为0.上面也说了,如果d0+λ和d0-λ为异号的时候刚好为极值点,损失函数导数为0(w为0是条件).而对于L2正则化,在w=0时并不一定是极值点而是d0 ...
- MZ头里面的东西。真他妈多
最后一个字段,也就是e_lfanew,的值表示PE头相对于文件首部的偏移,也就是说,在它的值所对应的位置,就是PE头的地址, 数据结构名称 值 e_magic: 0x5A4D->‘MZ’ e_c ...