其实连Docker公司都把Docker用错啦

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 这是一篇去年发的文章,但是有些见解目前来看,我觉得还是不错的。用户总是希望Docker能把什么工作都做了,提供自己的虚拟文件系统,提供强大的网络空间隔离,提供配套的编排工具。。。然而,这也为自己埋下了无数的坑

前言

好吧,我承认我标题党了。但是这篇内容应该让你从一个新的角度理解Docker的本质是什么。

Docker其实是static link 的一种回归。

我们在学C的时候,就有静态链接,动态链接,本质上是程序代码库的复用而已。那个时候我们认为动态链接库是最优的。为什么呢?因为一开始磁盘很贵,内存很贵,网络也很贵!是的,我们节省了硬件相关的东西,但是我们也为处理系统的各种链接库版本而付出了惨重的代价,浪费了程序员多少光年。Hey,身为程序员的你,是不是多次为编译依赖的链接库而苦恼不已。而随着程序规模的不断庞大, 各种依赖冲突也是不断。
现在,是时候让静态链接发挥作用的时候了。你看Docker容器动则几百M。如果是以前,你分发一个程序要几百M,你自己都吐血了,但是现在,大家已经毫不犹豫的感觉什么都没有发生的一样,接受了动则几百M的镜像了。

Docker无侵入性的让现存的进程变成具有资源限制的进程

假设你用Docker运行MySQL。当你使用ps命令,你只能看到MySQL进程,而看不到包裹他的壳(容器)的影子。是的这里的主体依然是MySQL,而不是壳,我们有时候会因为这个漂亮的壳而出现买椟还珠的有趣事情。
既然Docker只是无侵入性的让现存的进程变成具有资源限制的进程,那么进程原来是什么样,就应该是什么样:
  • 对于网络,Host 模式足够啦,高效而不带性能损失。其他的模式让你无谓的各种复杂
  • 对于硬盘,mout 本地磁盘足够了,为什么还有新的文件系统?
  • 为什么有registry 这个东西? Image 不就是个文件么,提供一个标准的文件下载服务器存放image不就行了?

程序和镜像本身也不是耦合的。只是程序运行的时候顺带加上容器这个壳,从而实现资源的隔离。这种模式该是怎么样的呢?
比如,我部署tomcat服务,以前是要现在服务器上部署调试好tomcat,然后分发war包运行。现在是我把war包放到一个目录,然后运行tomcat docker容器并且加载它就好(我们最漂亮-v参数)。对的,我们只是运行一个进程,并且指定了他的数据目录或者程序目录,就是这样。
MySQL也是,你为什么要纠结能不能把MySQL的存储也放到容器里呢?Docker容器+MySQL 就是MySQL啊,只是给MySQL包了个跨平台的壳,但它依然只是个普通的进程呀,所以数据还是应该在宿主机的磁盘上。
我们的思想会被羁绊,这也是Docker公司的误导导致的,他为什么要在进程里面虚拟出一个文件系统的,而且各种各种的实现,让有选择障碍性的人纠结的要死,因为他是一家商业公司,希望把大家绑定在自己的生态上。所以,把数据剥离出来,和以前一样的方式,Docker容器只是一个壳,我们真正的主题还是被包裹的应用。
推销下我开发的一套容器调度工具: mammuthus-yarn-docker-scheduler
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Docker 容器
|
Docker 容器
|
Kubernetes 供应链 安全
Docker Desktop 向大公司宣告收费,网友大呼:是时候弃用了
在容器引擎 Docker 诞生的 8 年间,其与开源的容器编排 Kubernetes 共同推动容器技术在云计算领域的应用,也让自身在全球范围内受到了广泛的关注。可以说,做过云计算开发的程序员,十有八有学过 Docker 技术。 不过,近日 Docker 官方宣布一项新的动作,即将产品订阅划分为个人、专业、团队和商业不同版本,对于这样做的原因,官方称是为开发者所依赖的生产力和协作提供了业务所需的规模、安全性和可信内容,由此以可持续性的方式为 Docker 提供服务。
|
Ubuntu 应用服务中间件 Go
公司要新招美女跟我学docker,你来吗?(4)
公司要新招美女跟我学docker,你来吗?(4)
|
负载均衡 NoSQL JavaScript
公司要新招美女跟我学docker,你来吗?(3)
公司要新招美女跟我学docker,你来吗?(3)
|
存储 NoSQL 网络协议
公司要新招美女跟我学docker,你来吗?(2)
公司要新招美女跟我学docker,你来吗?(2)
|
缓存 JSON NoSQL
公司要新招美女跟我学docker,你来吗?(1)
公司要新招美女跟我学docker,你来吗?(1)
|
关系型数据库 MySQL 数据库
公司mysql docker容器挂了,数据丢失,老板要起诉我。。
公司mysql docker容器挂了,数据丢失,老板要起诉我。。
450 0
公司mysql docker容器挂了,数据丢失,老板要起诉我。。
|
运维 Kubernetes 网络协议
Docker容器基础(二) - Docker公司的入场
Docker容器基础(二) - Docker公司的入场
114 0
Docker容器基础(二) - Docker公司的入场
|
Kubernetes Cloud Native 网络协议
Docker 容器实战 (二) :“ 鲸鱼” 公司粉墨登场
随着 PaaS 深入人心,Cloud Foundry 为首的传统 PaaS,开始蓄力基础设施领域的平台化和 PaaS 化,于是发现了 PaaS 中的问题 。本文将为大家讲解 Docker 的崛起之路。
890 0
Docker 容器实战 (二) :“ 鲸鱼” 公司粉墨登场