试想一下,你要把一个web应用以war包的形式部署在一台linux服务器上,你需要安装jdk,你要配置环境变量,你要安装tomcat...以及各种库和组件。换一台机器,这些麻烦的步骤还要重来一遍。所以人们就在想,有没有一种方式,规避这些烦人的环境问题,让开发者的关注点在应用本身,一次环境设置,可以部署到任何一个机器上面。
虚拟机
虚拟机是一种解决方案,它可以在一个操作系统中运行另一个操作系统。在安装软件时,先安装一个配置好环境的虚拟机,就跳过了多次进行环境设置的麻烦。
虽然用户可以用这种方法还原系统环境,但是这种方案有几个缺点:
Linux容器
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。**或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
相比较虚拟机,Linux容器有下面几个优点:
Docker
类似java开发常用的spring和spring boot之间的关系,Docker在容器的基础上进行了封装,为开发者提供简单易用的容器使用接口。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
上面说了那么多,就是为了解释为什么要使用Docker,让大家有一个感性的认识。下面介绍一下Docker的入门使用。
Docker 的主要用途,目前有三大类。
(1)提供一次性的环境。**比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
(2)提供弹性的云服务。**因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。**通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
#yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置 yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装最新稳定版 docker
yum install docker-ce
#启动
systemctl start docker
#加入开机启动
systemctl enable docker
#验证安装是否成功
docker version
#拉取镜像
docker pull 镜像名
#运行镜像文件
docker container run 文件名
docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
`docker start [OPTIONS] CONTAINER [CONTAINER...]`
`docker stop [OPTIONS] CONTAINER [CONTAINER...]`
`docker restart [OPTIONS] CONTAINER [CONTAINER...]`
更多命令参考这里 。