Q:Docker是什么,为什么要用Docker?
A:有一些使用虚拟机的场景,可能只要用Docker就可以了,如果可以使用Docker完成任务,那么比虚拟机要省很多内存、硬盘等资源。比如虚拟机运行一个Nginx需要系统本身可能2-4个GB的内存,而如果使用Docker,开一个Nginx和开10个相比,每个可能只占用很少的几十MB甚至几个MB的内存,因为系统是共用的,只要启动一个系统,就在上面从系统的层面对它们隔离运行,它们作为应用运行在同一个系统上,彼此不知道对方的存在
Q:所以什么是容器?
A:首先讲什么是镜像(image)。其他开发者提供的image可以直接作为基础的环境使用,比如centos/ubuntu等,里面提供了yum/apt等软件,当然也有基本的cd/ls/cat等命令啦。容器就是基于这个静态打包的镜像(类似于安装盘iso),可以运行,然后在里面敲命令,让它做一些事情,就像系统盘可以安装到不同的机器上做不同的事。在一台电脑上,可以让Docker根据一个镜像运行多个容器,可以分别在容器中做不同的事情,当然,也可以做一样的事。
Q:都能安装什么软件呀,像QQ是不是也能多开了?
A:一般来说不是针对QQ这种面向用户的软件的,Docker中运行的程序主要是作为微服务运行在后台的,比如数据库、网页、数据处理程序、图像处理程序等。默认的软件库中有常见的Linux软件,比如MySql、GitLab等等,也可以自己定制。一般的Docker服务都是基于Linux系统的,软件也就需要安装Linux版本的,虽然较少用到Windows系统的容器,但其实是支持的,就需要专门启动Windows系统的Docker后台了,也只是在Windows系统上才支持。
Q:为什么是Linux?我用Windows/MacOS,能用吗?
A:现在火起来的这个容器的概念最初是在Linux中实现的,现在基本都指的是这种容器,Docker官方提供Windows/MacOS的安装包,都是通过虚拟机运行一个Docker后台Linux系统实现的。而在Linux系统上可以直接使用系统的包管理器安装,比如yum install docker-ce或者apt-get install docker-ce。在Linux中使用Docker的话,由于没有虚拟机的隔离,所以可以直接访问容器中的网络,而在Windows/MacOS平台中这方面就麻烦一些,一般要把端口映射到宿主机上使用。
Q:几乎只能用命令啊,会不会很难学?
A:如果要学习使用Linux,想安装一个虚拟机,如果是图形桌面的环境,建议直接物理安装启动,可能没必要放虚拟机里,如果是安装的命令行界面的,那其实再学习一下Docker的命令也不会多多少,对于系统资源占用还小,使用时候还不用重启切换系统,不是挺好嘛?
Q:还在犹豫,这东西真的有用吗?
A:作为开发者,开发出来的软件要上云,不管是公有私有,很可能已经微服务化的架构了,你提供一个Docker镜像就能部署上去。作为运维、架构,实在不想像过去那样天天为了系统中的软件版本不停升级降级处理冲突处理紧急安全更新之类的了,而且现在各家服务商都提供云化的服务了,都是容器化的