五分钟带你了解什么是docker~

403 阅读4分钟

image.png

1、为什么学习docker

最近总是在听大佬们说,docker镜像,容器,环境??都是啥啊???我是不是听错了,$美元么?好家伙,光想想我就兴奋~

image.png

虽然没接触过docker,但是这些问题,你可能遇到过:

  • 场景1、这代码在我本地跑是没问题的啊,上线之后怎么挂了?(开发和运维的环境不一致的问题-linux和mac或者win,以及全局的依赖,配置)
  • 场景2、作为一个小白fe根本不理解,为什么总是申请不到测试环境,你们qa能不能多搞几套测试环境?怎么总说搭建环境费劲啊,很难么?(环境的快速搭建问题,及机器资源合理利用问题)
  • 场景3、公司的机器不够用,把张三的项目和李四的项目部署到一个机器上了,李四总是乱改一些环境变量,导致张三这边总出线上bug,于是。。。 (传统的做法,也有把两个项目部署到同一个机器上,占用不同端口号,但是他们却依赖很多相同的环境变量和全局的配置)

image.png

好了,如果你遇到过上述问题,那么让我们一起看下去吧~

2、docker的发展之路

落后的旧时代

很早之前,大部分应用是运行中服务器上的,曾经,每个服务器只能运行单一应用,linux和window操作系统没有办法保证一台机器稳定并且安全的运行多个应用。同时,采购员在采购机器的时候,很少有人知道新增的应用是怎么样的,所以多数时候买的机器都是性能远远优于业务需求的服务器,这种做法导致服务器的长期额定负载很低,这对公司的资源是极大的浪费~

虚拟机问世

为了解决上面问题,VMware给了全世界一个大礼物 - 虚拟机(vm),几乎是一夜之间,世界变的美好了~

虚拟机的不足

虚拟机最大的缺点,就是依赖其专用的操作系统(os),os会额外占用CPU,RAM,和存储,而这些资源本可以运行更多应用,同时,虚拟机启动速度慢,可移植性差

docker出现了

容器和虚拟机的模型相似,区别在于容易不会独占操作系统,实际上,运行在相同宿主主机上的容器是共享一个操作系统的,这样的话,节省了大量的资源(博主暂时把docker粗糙的理解为了轻量的虚拟机,docker容器可以理解为一个精简版的linux系统,只有基本的环境可以使用,容器的内容称为镜像,容器方便移植,拷贝,甚至copy到另一个机器上)

其实博主的理解是把容器理解成了一个进程,但是这个进程是和外界隔离开的,所有的磁盘io操作,环境变量设置等等操作,都是隔离的,容器销毁了,就什么都没有了

简单介绍docker做了什么事情。

  • docker是一个可以创建、管理容器的东西。可以理解为docker里面存放了许多容器。
  • 容器就是一个精简版的linux系统,这个系统只有基本的环境供以使用,里面可以运行程序(可以是mysql,可以是nginx,可以是redis等)。
  • 容器的创建是依赖于镜像的,镜像可以看作是一个模板,docker可以根据镜像生成一个容器实例,假如你需要一个容器中放入mysql,那么就去docker的镜像仓库拉取一个mysql镜像(可指定版本),然后docker可以基于这个镜像创建一个mysql容器,这样就能在docker中运行使用一个只含有mysql的系统了。
  • 容器的存在使我们可以方便做很多事情,比如项目需要mysql、nginx环境来运行,可以直接创建mysql和nginx容器供项目使用,不需要在服务器上下载、安装、配置这些环境,容器内部已经包含了这些必备的东西。同时容器还可以很方便的移植,比如我们需要切换服务器,这些项目正在使用的容器可以直接打包带走放在另一个服务器上。

3、docker 环境搭建和入门

去官网上下载,然后安装,能够打开如下界面,说明本地的docker环境已经搭建成功

www.docker.com/products/do…

image.png

4、docker架构

image.png

左面是我们客户端,中间的是我们docker环境,右面的是存储镜像的服务,我们本地的操作命令会传达给Docker daemon,Docker daemon主要是帮我们做一些拉取镜像,运行容器的一些命令。