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账号,这里就对应输入AKSK,输入正确的话就是提示登入成功。

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-1relay-2gms等等,如图所示:

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步整合成一个脚本,然后通过运行脚本直接将已经配置好的镜像生成到容器里部署到服务器里使用,这样更加便捷从而提升了效率。


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


六、总结 

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

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

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

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

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

而其缺点如下:

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

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

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

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



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

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
100 2
|
2月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
94 5
|
9天前
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
44 4
docker入门-快速学会docker
|
23天前
|
存储 监控 C++
11 个必备 Docker 工具
11 个必备 Docker 工具
128 11
11 个必备 Docker 工具
|
25天前
|
存储 安全 数据中心
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具。本文探讨了 Docker 如何通过 Namespace 和 Cgroups 实现 CPU、内存、网络和存储资源的隔离,提高系统安全性和资源利用率,以及面临的挑战和应对策略。
43 1
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
144 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
1月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
1月前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
1月前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
84 2
|
1月前
|
存储 缓存 Kubernetes
docker的替代工具有哪些?
【10月更文挑战第28天】docker的替代工具有哪些?
151 1

热门文章

最新文章