Docker入门与七牛kirk工具

简介:




wKioL1fM2DrTC1MEAADYWCKNe4g804.jpg-wh_50

一、Docker的实现原理和技术前景

Docker技术是一门容器技术,于2013年正式开源发行,现在它已经成为了目前最流行的虚拟化技术,Docker的优点是“轻量型”,“可移植”,“自给自足”。

 

Docker大略执行思想如下:

1)  启动一个基础镜像(image),比如centos或者ubantu;

2)  Docker可以根据这个基础的image来构建成一个容器(container);

3)  在这个容器上,我们可以像在普通的服务器上编写需要的代码,并且启动编写好的服务(service);

4)  将这些已经编写好的、有服务的容器重新打包成镜像,这个镜像可以备用也可以放在网络上分享。

 

从上面几个操作步骤来看,Docker技术与虚拟机技术有类似的效果,同样达到在一个宿主机上运行多个子服务器的目的,而且每一个容器之间互不干扰,就像Docker的标志一样:一个大鲸鱼背上面有诸多个集装箱,这些集装箱就是装载各种服务的容器们,而这个大鲸鱼就是docker,它可以同时负载多个容器并且让这些容器平稳正常的运行,不管如此,docker容器的运行效率又是虚拟机的好多倍,可以迅速提升响应速度也是Docker备受开发人员和运维人员青睐的原因之一。Docker的引擎开发、二次管理以及安全策略也是时下非常火热的技术,可以说Docker 给运维带来了革命性的改变,大有深入乃至挖掘的必要性!

 

二、Docker的安装以及kirk的安装

Docker的安装对宿主机的内核有比较硬性的要求,Docker要求宿主机的内核是3.1.10。也就是说Docker应该工作在Centos 7以上的版本里,而不是我们传统购买的服务器Centos 6.5版本。由于目前阿里云和金山云的Centos 6.5默认自带的内核都是2.6.32,所以如果要在以上两个厂家的Centos 6.5里正常使用Docker的话需要我们自己升级内核。

 

在Centos 7里安装Docker是十分简单的,只需要#yum install Docker,而启动Docker也是很简单的:#service Docker start,在运行之后我们可以查看一下当前Docker的版本:

wKiom1fM2GjiTBWnAABeT1OUIFw709.png

如果能像如图那样成功显示Docker的版本,即代表Docker已经安装且运行成功。


Kirk是七牛云提供的一个管理docker容器的工具,我们可以把七牛的账号用于kirk,使kirk专门存储内部的模块镜像,并且可以调用这些docker服务,它对应linux下载包的地址是http://7xqd3r.com1.z0.glb.clouddn.com/kirk/beta/latest/linux-amd64/kirk.tar.gz,下载完毕之后直接拆包解压即可使用。

 

三、整个P2P的服务启动过程

下面我将以P2P为例,演示一下启动P2P服务的过程:

当我们从开发人员手里获取到docker file,并且将其build成一个可使用的镜像之后。

  1)  登陆kirk账户

在七牛网站右上角的“个人面板”点击“密钥管理”,就会看到一对密码分别是AK/SK,如图所示:

wKioL1fM2K-jQFiDAACKHnHqPzU463.png-wh_50

在服务器端输入#kirk login就是登陆kirk账号,这里就对应输入AK和SK,输入正确的话就是提示登入成功。

2)使用#kirk images来查看kirk里所有的镜像:

wKioL1fNE6bTAuTWAAKBvtJASEc665.png

        看到现在的kirk里面已经有不少的docker  P2P镜像,而且后面分别是这些镜像建立的时间点,我们这里需要的是p2prelay服务,于是我们只需要启动它,但是要注意,在docker里一个镜像是可以生成多个容器的,这些容器在出生阶段是一模一样的。但是在kirk里一个镜像只能生成一个服务(service),如果重复的打开同一个服务,会报错ERROR fail to start service: {"code":400,"codeName":"E30014","description":"current state is invalid to start service"}

,查看当前运行容器的命令是#kirk ps,因为这是一个新装的机器,所以#kirk ps结果为空。


  我们要启动服务的话,需要先启动七牛的工具,#kirk service qiniu-tool,然后再如法炮制分别启动对应的服务,比如启动relay-1、relay-2、gms等等,如图所示:

wKiom1fM2TTyjDraAABxF6boAdo356.png

如果这个时候想进入到relay-1这个容器里面看一下,就使用#kirk ssh relay-1这个命令:

wKiom1fM2SnR6mXlAABX1sud-5A004.png

       这里发现hostname发生了变化,变成的10-128-128-113恰巧就是relay-1对应的那个container编码,在容器里这个P2PRelay已经完全启动了。

 

   如果想要退出当前容器,使用命令#exit就返回宿主机,继续宿主机的操作。


四、校验

  启动服务之后,我们登陆到容器relay-1,容器就相当于是一个虚拟机,那么在这个小虚拟机里是可以查看进程的,使用#ps –ef一下可以查看进程,而且还可检查一下端口以及看一下其他的服务:

wKioL1fNE_fQ_LatAADybDhFxtQ794.png

     由于这台P2P只是试验,所以bind count和angets num都是零,但是依旧可以看出服务和端口已经是正确的了。

       但是目前七牛的kirk还是有一点问题:它只能把容器挂载到宿主机的文件夹上,而不能实现把容器挂载到其他云服务器的文件夹上,这一点在模块的升级上有所不便,与七牛技术人员沟通,他们反馈目前在做一个类似网络云盘共享的开发,预计将来可以通过此途径解决这个问题。但是在目前阶段,如果涉及到模块的更新,就需要重新编写一个image,重新build成镜像,这一点与原有的从挂载盘上拷贝更新脚本有很大的不同。


五、对比

在传统的运维部署下,运维人员需要做的事情如下:

1)  购买云服务器,对应填写服务器ip表格;

2)  初始化服务器,金山区服务器还需要挂载数据盘;

3)  检查角色,运行模块安装脚本;

4)  将服务器内网ip添加到zk配置里;

5)  启动进程,检查zk、模块、看门狗是否都已经启动;

6)  检查日志情况;

而在docker-kirk的环境下,运维部署模块的步骤:

1)  购买云服务器,对应填写服务器ip表格;

2) 运维人员得到开发人员的dockerfile,将其build成一个镜像;

3)  使用kirk上传其镜像到七牛云;

4)  kirk启动对应的服务;

5)  根据不同的ip需求配置ip端口;

6)  登陆容器内部,检查进程、zk、看门狗;

7)  检查日志情况。

 

从上所见,在docker-kirk过程里省去了脚本这一步,传统模式下由于开发人员模块编写语言各有不同,有的是java模块,有的是tomcat模块,因此在启动上和后台所需环境版本上均有差异,有的甚至在看门狗的配置上都有差异,而这些差异都是需要运维人员手动去修改脚本,而使用了docker-kirk,就可以将2、3、4步整合成一个脚本,然后通过运行脚本直接将已经配置好的镜像生成到容器里部署到服务器里使用,这样更加便捷从而提升了效率。


但是kirk的ip配置是一个难点,而且批量端口影射服务尚不完善,这些都有待七牛开发人员后续跟进补全。


六、总结 

   如果引用Docker技术的话,我们将来可以依旧使用阿里云、金山云的跳板机去登录相对性能较低的云服务器,同时在服务器上安装七牛的kirk工具,同时根据不同的模块需求购买对应性能的七牛云服务,七牛云服务提供硬件环境,kirk作为工具,这样两者双剑合并来增删改用各种Docker镜像,从而启动各种进程。

  目前测试看来Docker的优点如下:

  1)         保证线上与测试的环境一致,省去了中间配置各种环境的麻烦,甚至可以在同一个服务器上安装不同独立的服务;

2)         快速部署,传统的部署模式是:安装(包管理工具或者源码包编译)->配置->运行;Docker的部署模式是:复制->运行;

3)         对云计算更加方便和友好。

而其缺点如下:

1)       目前尚不支持传统意义上的挂载,升级的时候需要重做镜像;

2)       网络机制比较复杂,导致其大型部署比较麻烦,甚至会出现失控情况;

3)       一些运维常见功能比如crontab需要事前增加到Dockerfile里;

4)  目前kirk不支持退出当前账号的功能;



本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1846337

相关实践学习
基于ECS搭建云上博客
本实验教您如何在ECS云服务器(Alibaba Cloud Linux 3)的环境下,通过部署LAMP环境并安装WordPress快速搭建个人博客。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
834 2
|
运维 Kubernetes 开发者
解锁现代开发与部署:Docker入门指南
解锁现代开发与部署:Docker入门指南
389 100
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
938 52
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
1123 79
|
关系型数据库 MySQL Linux
事项驱动的项目管理工具Dectask的Docker安装教程
Dectask是智能驱动的新一代项目协作工具,本人介绍其Docker安装教程。
343 2
|
前端开发 数据安全/隐私保护 计算机视觉
MAZANOKE:一款隐私优先的浏览器图像优化工具及Docker部署指南
MAZANOKE 是一款简易的图片优化工具,它直接在浏览器中运行,支持离线使用,并确保您的图片始终保留在设备上,绝不外泄。 这款专为普通人设计的工具,适合与亲友分享使用,是那些来路不明的"免费"在线工具的可靠替代品。
668 1
MAZANOKE:一款隐私优先的浏览器图像优化工具及Docker部署指南
|
存储 数据可视化 数据安全/隐私保护
【赵渝强老师】Docker的图形化管理工具
本文介绍了三种主流的Docker图形化管理工具:Docker UI、Portainer和Shipyard。Docker UI(现名UI for Docker)适合初学者,支持容器管理并可显示容器关系图;Portainer轻量级且功能全面,支持单机与集群管理;Shipyard专注于多主机集群管理,提供镜像、容器及节点管理功能,并包含engine和rethinkdb两个核心组件。文中还通过图文结合的方式展示了各工具的安装与使用方法。
1327 5
【赵渝强老师】Docker的图形化管理工具
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
954 11
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
983 1
|
人工智能 文字识别 安全
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具
Stirling-PDF 是一款基于 Docker 的本地化 PDF 编辑工具,支持 50 多种 PDF 操作,包括合并、拆分、转换、压缩等,同时提供多语言支持和企业级功能,满足个人和企业用户的多样化需求。
1757 6
Stirling-PDF:51.4K Star!用Docker部署私有PDF工作站,支持50多种PDF操作,从此告别在线工具

热门文章

最新文章