《Docker:轻量级虚拟化解决方案》
《Docker:轻量级虚拟化解决方案》
在当今的软件开发和部署领域,Docker 以其独特的优势成为了众多开发者和运维人员的得力工具。它是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。
一、Docker 的简介与概述
Docker 的主要目标是 “build,ship and run any app,anywhere”,即通过对应用程序组件的封装、分发、部署、运行等生命周期的管理,使用户的 app(可以是一个 web 应用程序或者数据库应用等)及其运行环境能够做到 “一次封装,到处运行”。
Linux 容器技术的出现解决了应用跨平台部署的问题,而 Docker 就是在其基础上发展而来。将应用运行到 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。
Docker 从 17.03 版本之后分为 CE(Community Edition:社区版)和 EE(Enterprise Edition:企业版),对于大多数用户来说,社区版就可以满足需求。
实际上,Docker 就像是一个虚拟化轻量级 Linux 服务器,可以解决我们在开发环境中运行配置问题。它利用沙箱机制,容器之间相互隔离,不会有任何接口,性能开销极低。
二、为什么需要使用 Docker
在软件开发过程中,常常会遇到开发环境与生产环境不一致导致的问题。比如开发了一个 javaweb 项目,需要依赖很多环境配置,如 Tomcat、JDK 环境、Nginx、Redis 环境等。本地和服务器都需要安装这些环境,但是有时候会因为版本冲突而出现问题。而 Docker 可以将该 springboot 项目制作成一个镜像文件,镜像文件中包含 jdk 版本、tomcat 版本信息等,直接部署到 linux 即可,减少依赖冲突概率。
以安装 MySQL 为例,传统方式容易发生版本冲突问题,而使用 Docker 安装则非常方便,只需要执行 “docker pull mysql:5.7” 和 “docker create --name mysql3308 -e MYSQL_ROOT_PASSWORD=root -p 3308:3306 mysql:5.7” 即可。
三、使用 Docker 的好处
- 简化配置:安装创建非常方便。
- 代码流水线(Code Pipeline)管理:传统项目部署可能需要经过很多环节,容易产生版本的依赖冲突问题。Docker 给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。
- Devops 开发与运维一体化:减少沟通成本,可以通过 Docker 或者是 k8s 实现。
- 虚拟技术,快速部署。
- 弹性扩容。
四、Docker 的应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
五、容器与虚拟机区别
虚拟机是在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。从下到上包括物理机、操作系统、虚拟机软件、虚拟操作系统以及在虚拟操作系统中安装的软件和组件等。
Docker 则是开源的应用容器引擎,从下往上看,包括物理机、操作系统、Docker 容器的管理器。依赖和应用都被打包成了 Docker 镜像,运行在 Docker 容器里,容器和容器间是隔离的。
两者主要有以下区别:
- 架构方面:虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而 Docker 是在操作系统的层面虚拟化,复用操作系统,运行 Docker 容器。
- 启动速度:Docker 秒级启动,而虚拟机通常要按分钟计算。
- 资源使用和性能:Docker 所用的资源更少,性能更高。同样一个物理机器,Docker 运行的镜像数量远多于虚拟机的数量。
- 隔离性:虚拟机实现了操作系统之间的隔离,隔离级别更高、安全性方面也更强;Docker 是进程之间的隔离。
- 很多企业都采用物理机上做虚拟机,虚拟机中跑 Docker 的方式,两者各有优势,不存在谁替代谁的问题。
六、Docker 官网及安装
Docker 官网为 https://docs.docker.com/ 和 https://www.docker.com/ 。
Docker 要求 CentOS7 系统的内核版本在 3.10 以上。安装步骤如下:
1、通过 uname -r 命令查看你当前的内核版本
uname -r
2、 使用 root 权限登录 Centos。确保 yum 包更新到最新,该过程大概需要维持10分钟左右
yum -y update
3、 卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、 安装docker
sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
8、 启动并加入开机启动
systemctl start docker
systemctl enable docker
9、 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version