0. 为什么使用docker
Docker 是世界领先的软件容器平台。(且能说得上没有竞品)
开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
我不需要懂你的程序怎么配,在任何安装了docker机器上,只要我能获取你的镜像,我就可以跑你的服务。
1. 环境(切换/配置)麻烦
一般我们写程序的,能接触到好几个环境:
- 自己写代码的环境叫做开发环境。
- 给测试去跑的环境叫做测试环境。
- 测试完可以对外使用的叫做生产环境。
我们在编程工作中,很多时间都浪费在“环境”上:
- 主机的核心程序大都依赖python2.7(yum等核心程序),python2.7停止维护了/我写的程序是基于python3,怎么办?
- 现在生产环境是JDK1.8,但以后总是要写Java11甚至是写Java17的,怎么办?
- 一个程序/服务基于语言A编写,需要环境A,好不容易在生产环境的所有服务器装上了环境A跑起来了;某日基于语言B编写了新程序,需要环境B,又要在所有生产服务器安装一次环境B?
2. 应用之间需要隔离
比如我写了两个应用(网站),这两个应用部署在同一台服务器上,那可能会出现什么问题?
- 如果一个应用出现了问题,导致CPU占100%。那另一个应用也会受到关联,跟着一起凉凉了。
- 这两个应用是完全不同技术栈的应用,比如一个PHP,一个.NET。这两个应用各种的依赖软件都安装在同一个服务器上,可能就会造成各种冲突/无法兼容,这调试可能就非常麻烦了。
