首页 > 其他分享 >Docker改造传统应用的流程

Docker改造传统应用的流程

时间:2023-02-26 22:01:37浏览次数:33  
标签:容器 改造 流程 应用 镜像 Docker CPU

首先根据系统的特点判断是否适合Docker化改造,如适合改造,则开始制定改造方案,改造方案会涉及系统镜像的组成、镜像的参数、镜像的启动方式以及源码改造点等基本问题。接下来就是改造环节了,即改造代码以符合Docker的要求,然后制作镜像。最后是验证阶段,由于可以在一个单机上启动多个Docker容器进行联网调测,所以单机测试验证通过以后,基本上就表明了多机分布式部署的正确性,最后进行多机部署测试,以及生产环境的上线过程。

那么哪些应用适合Docker化改造?一般认为符合以下条件的应用是适合进行Docker化改造的。

1)频繁修改和升级的系统。

2)不太稳定,容易死机或者导致CPU、内存等过度消耗的应用。

3)大量使用开源技术和中间件的系统。

4)其主要目的是用作演示的应用。

首先,很少变动的系统不适合进行Docker化改造,因为很少变动的系统意味着没有什么业务需求支撑,如果花很大代价将其进行改造,就是一种投资浪费。系统改动升级越频繁,Docker化的价值越大,因为Docker镜像后的系统部署和升级都很容易实现标准化和自动化,大大提升了项目组的工作效率,减少了重复劳动,Docker化以后,镜像都有版本,因此升级失败后的回滚也变得更容易和可靠。

其次,Docker容器因为共享Linux内核,所以那些与Linux底层密切相关的应用是不适合Docker化的,因为这些容器大量操作内核API,可能导致内核不稳定,如内核崩溃,此时其他容器都受牵连,这是非常严重的。所以这种情况是不能进行容器化的,必须要独立出去。而对于那些不太稳定、容易“自杀”或者容易导致CPU和内存过度消耗的应用,则很适合Docker化,因为Docker可以做CPU和内存的资源配额限制,例如,一个Docker容器只分配1GB的内存,则此容器内的进程如果申请超过1GB的内存,就可能会被Docker Engine“杀死”,如果该容器限定了使用0.5个CPU,那它永远不会得到超过0.5个CPU的使用量,因此Docker化以后,这种过度消耗资源的进程会被约束,不会导致系统问题。另外,如果某个进程不稳定并且容易“自杀”,则可以在容器化的时候设置它的启动策略为“restart=always”,这样如果Docker Engine发现这个容器“死了”,就会自动尝试重启这个容器。

最后,其主要目的是用作演示的应用以及项目POC也都适合Docker化。因为Docker比较轻量,很容易用Docker容器部署一个集群应用,这个集群应用只需要少量资源,如在高配置的笔记本式计算机上就能流畅演示。此外,如果演示者本身并不是很懂技术,相对于虚拟机等复杂的技术,Docker的使用还是很容易快速掌握的,稍微培训一下,很多售前和销售人员就能正确启动一套Docker的演示集群。此外,每次创建的Docker容器都是全新的、没有历史数据的,因此每次演示都能确保系统是正常可靠的。

总结下Docker化改造传统应用的关键步骤如下。

1)评估代价与可行性——评估改造的可行性及资源投入等。

2)改造方案——包括如何升级改造、对代码进行修订的指导性意见等。

3)代码修订——对前期涉及的原有代码进行修订,包括一些接口设计等。

4)制作镜像——实施阶段,制作镜像。

5)单机验证测试——对镜像做单机验证。

6)多机部署——多机环境的正常部署和应用的正常启动。

标签:容器,改造,流程,应用,镜像,Docker,CPU
From: https://blog.51cto.com/key3feng/6086980

相关文章

  • docker 常用命令
    docker概述集装箱隔离机制docker历史dotCloud,容器技术,开源,轻巧,go语言docker能干嘛容器化技术不是一个完整的系统应用更快速的交付和部署更便捷的升级和扩容......
  • docker 镜像原理
    文件系统docker的镜像是由多个只读的文件系统叠加在一起形成的。每启动一个容器的时候,会加载只读层并在栈顶增加一个读写层。增删改查都是在读写层操作的。在docker中,只......
  • JavaScript 流程控制语句
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *流程控制语句 * -JS中的程序是......
  • Docker基本操作
    #打包镜像dockerbuild[-ttag名称].dockerbuild-tv1.15.100.#更改tagdockertag元tag目标tagdockertagbd754a5c2630192.168.**.**/bigdata/eclipse-t......
  • git/github 使用流程
    #克隆远程仓库到本地gitclonehttps://github.com/example/example.git#创建一个新的分支(复制一份当前的branch到新branch上),git会把这个branch上面的所有源文......
  • 路飞:企业项目类型、软件开发流程、路飞项目需求、pip永久换源、虚拟环境、路飞项目前
    目录一、企业项目类型二、软件开发流程三、路飞项目需求关于路飞项目需求四、pip永久换源永久配置安装源WindowsMacOS、Linux配置文件内容提交模块五、虚拟环境1、windows......
  • ubuntu 安装docker
    ubuntu安装docker目的学习docker构建一个自己的gitlab+jenkins的自动化构建部署的环境,用来学习C/C++,python,javadocker安装我参考的是这个网页,https://www.runoob......
  • Java流程控制:用户交互Scanner、选择结构
    Java流程控制:用户交互Scanner、选择结构用户交互ScannerScanner类用于获取用户的输入基本语法:Scanners=newScanner(System.in);s.close();packagecom.qiu.first.......
  • 群晖 DSM 7.0 Docker 部署安装 ZeroTier(转)
    群晖DSM7.0Docker部署安装ZeroTierhttps://www.vvso.cn/xlbk/20273.html群晖Syn­ol­ogy发布NAS系统DSM7.0正式版本,第一时间更新了,也发现挂掉了不少的套件,......
  • Docker运维之容器的日志清理
    在容器运行的过程中,通常会产生大量的日志,尤其是应用程序本身记录了info级别的日志时候,程序的标准输出记录到容器的日志。这样会占用大量的磁盘空间,严重者导致IO异常,最终服......