我们的项目使用到了Docker, 在项目根目录里有一个Dockfile,它是Docker的配置文件,我也照葫芦画瓢改过里面的内容,但是对于Docker这门技术到底解决了什么问题,有什么优点确实没有研究过。
Docker解决了什么痛点?
开发和运维之间环境不一致,导致两个角色之间来回拉扯
这不由得想起我在前司的时候,经常开发环境下跑得好好地,一发布上去就挂了。那时候我们压根没有用Docker, 属于是部门内部自己炮制的一整套发布体系。前端代码写好后,打包发到CDN上,然后有一个node服务区负责拉取资源后渲染返回到客户端,有时候本地开发依赖的NPM包版本和Node环境里用的不一致,就出了问题。安装移植麻烦,多台集群,扩容,缩容也麻烦
这个我到没有深刻的体会,不过想想也好理解,比如一个集群有10台机器,发布的时候往10台机器安装发布,万一要增加或者减少机器可麻烦了。
有了Docker, 可以实现什么?
可以实现软件带环境安装!
拿搬家的例子来说, 普通搬家 -> 整栋楼挖过去
那岂不是很占空间效率变慢?是的 不过总的来说瑕不掩瑜。
容器和虚拟机的区别是什么?
虚拟机是一个特殊的软件,它是一个操作系统,安装在另一个操作系统中,属于套娃,有独立内核,涉及硬件, 缺点是资源占用 冗余步骤 启动慢
容器只是独立的文件系统(鲸鱼背上的集装箱) 而不是整个操作系统
容器虚拟化技术 =》 Docker 复用本地主机内核 不会虚拟硬件