一、Docker
1.1 Docker简介
Docker是一个用于构建运行传送应用程序的平台,即把一个个运用程序打包成集装箱并传输到任何需要的地方。
有了Docker,就可以把运用程序与它运行时需要的各种依赖包和第三方软件库、应用程序与环境变量、配置文件和启动命令打包在一起,以便在任何环境种都可以正确的运行。
例如,我们开发一个现在流行的前后端分离的项目,你需要在本地安装nodejs环境、npm依赖、java运行环境、安装各种第三方依赖、安装mysql数据库、配置环境变量和启动脚本,若是项目再大一些还需要安装Redis缓存,安装配置,并启动这些服务运行。而且若要部署到测试环境和生产环境,这些操作还需要再做一次,十分耗时耗力。有了Docker,可以将这些组件打包成一个个集装箱,只要在开发环境运行成功了,在其他环境中就可以运行成功。
解释docker如何解决使程序在不同操作系统上运行的原理:
运用程序在不同的linux操作系统上运行,主要是调用操作系统的系统函数库。不同的linux系统如ubuntu,CentOS等核心都是linux,docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的linux内核,因此可以在任意linux操作系统上运行。
1.2 Docker与传统虚拟机的区别
虚拟机将一个物理服务器虚拟成多个逻辑服务器,每个逻辑服务器都有自己的操作系统、CPU、内存、硬盘和网络接口等,它们之间完全隔离,可以独立运行。缺点是每台虚拟机就需要占用资源,而实际情况下,每台逻辑服务器只需要一个主要对外提供服务的应用程序就可以,并不需要一个操作系统所提供的所用功能。
注意:
Docker和容器不是一个东西,Docker是容器的一种实现,是一种容器化的解决方案和平台,而容器是一种虚拟化技术,和虚拟机类似,也是一个独立的环境,可以在这个环境中运行运用程序。和虚拟机不同的是,它不需要在容器中运行一个完整的操作系统,而是使用宿主机的操作系统,启动速度非常快。同时,因为需要的资源更少,所以可以在一台物理服务器上运行更多的容器,这样就可以更加充分地利用服务器的资源,减少资源地闲置和浪费。
1.3 Docker的基本原理和概念
1.3.1 镜像、容器、仓库、逻辑卷
镜像是一个只读的模板,它可以用来创建容器。其实镜像类似一个软件的安装目录:
例如,mysql的安装目录如下
容器是Docker的运行实例(进程),它提供了一个独立的、可移植的环境(独立的cpu资源,文件系统),可以在这个环境中运行运用程序。
镜像和容器的关系就是java中的类和实例的关系,可以创建一个或多个镜像的容器。