1、剖析虚拟化技术概念
1)虚拟化是一个主流的技术,虚拟的,看不见的,但是可以落地的,用于资源管理的一项技术;
2)虚拟化的技术诞生的目标就是为了解决资源管理和资源利用的解决方案;
3)虚拟化就是将物理设备转变为逻辑上可以管理资源,以打破物理之间结构的壁垒,让计算元件运行在虚拟的基础上,而不是真实的物理设备上;
4)虚拟化的底层是要进行虚拟的物理机器,通过虚拟化技术可以将物理机虚拟生成N个虚拟机,应用程序、软件(Apache、MYSQL、Nginx、Redis、Tomcat)运行在虚拟机中,而不是物理机;
5)假设公司需求,需要部署100个Nginx服务,有如下的方案:
- 采购100台低配物理机,每台物理机部署一个Nginx服务;
- 采购10台高配物理机,每台物理机虚拟10台虚拟机(配置同低配物理机),每个虚拟机部署一个Nginx服务;(企业推荐)
6)虚拟化技术,主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件资源。
2、Docker虚拟化技术概念
1)虚拟化技术进行分类,分为三大类:完全虚拟化、半虚拟化、轻量级虚拟化(Docker),虚拟化技术分层的抽象,如图所示:
2)Docker技术的产物是Docker容器(集装箱),容器中存放各种依赖文件、库、应用软件,可以打包繁杂的库文件、依赖程序到容器中,可以方便迁移到其他的平台;
3)传统虚拟化技术,如果想部署Nginx服务,必须基于底层硬件-VMM-GuestOS-Nginx服务;
4)Docker虚拟化技术,如果想部署Nginx服务,必须基于底层硬件-VMM-Nginx服务;
3、从0开始构建Docker虚拟化平台
1)Docker官方要求Linux系统内核3.8+,对应的Linux操作系统发行版本:CentOS、Redhat、Ubuntu、Suse等;
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
Linux查看版本命令:
cat /etc/redhat-release //查看系统版本 uname -a //查看内核版本 df -h //查看磁盘容量
2)生产环境最好使用CentOS7.x+;
3)基于CentOS6.x安装部署Docker平台,指令如下:
yum install epel-release docker-io lxc device-map* cgroup -y
4)基于CentOS7.x安装部署Docker平台,指令如下:
yum -y install docker
检查是否按照成功
docker version
若输出了 Docker 的版本号,说明安装成功了,可通过以下命令启动 Docker 服务:
service docker start
一旦 Docker 服务启动完毕,就可以开始使用 Docker 了。
5)docker命令
使用命令前先理解docker三组件的关系:
docker 三组件:镜像、容器、仓库:
1.镜像
Docker运行容器前需要本地存在对应的镜像。
Docker镜像,类似ISO镜像文件,静止的,不能被修改,一个模板文件;
镜像可以用来创建Docker容器的。一个镜像可以包含一个完整的操作系统环境和用户需要的其它应用程序。在docker hub 里面有大量现成的镜像提供下载。docker的镜像是只可读的,一个镜像可以创建多个容器。
2.容器
Docker利用容器来开发、运行应用。
Docker容器,基于Docker镜像运行的实体,类似程序和进程的关系,进程是程序(软件)运行的实体;
容器是镜像创建的实例。它可以被启动、开始、停止、删除。每个容器都是 相互隔离的、保证安全的平台。
3.仓库
仓库是集中存放镜像文件的场所。
每个 仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
最大的公开仓库是DockerHub,存放了数量庞大的镜像供用户下载。国内的公开 仓库包括DockerPool等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。
基础命令:
docker search tutorial //检索名字为“tutorial”的镜像
docker pull medicean/vulapps:s_struts2_s2-052
//从镜像仓库拉取镜像到本地
docker images //查看已下载的镜像
docker run -d -p 8888:8080 medicean/vulapps:s_struts2_s2-052 //启动环境
参数说明:
- -d:让容器在后台运行。
- -p:将容器内部使用的网络端口映射到我们使用的主机上。(如8080为st2-052镜像的端口,将8080映射到本地的8888端口,即可通过访问本地ip:8888来访问我们搭建的镜像环境)
docker ps 查看当前正在运行的容器 docker ps -a docker ps -a可以看到所有的容器,包括正在运行的和已经停止的
docker stop ed //停止某个正着运行的容器 docker start ed //如果想继续使用,用start来启动它 docker stop ed //想删除这个容器、要先停止这个容器、用stop就可以停止 docker rm ed //这个用来删除已经停止的容器 docker rmi imgesid //删除镜像
docker run -t -i +镜像id /bin/bash //启动一个bash终端。并允许用户进行连接
//-t 让docker分配一个伪终端,并绑定到容器的标准输入上,-i 则让容器的标准输入保持打
6)使用yum卸载docker
yum list installed | grep docker //列出安装的软件包
yum -y remove docker-engine.x86_64 //移除软件包
rm -rf /var/lib/docker //删除所有镜像、容器和组
笨鸟先飞早入林,笨人勤学早成材。
转载请注明出处:
撰写人:fox-yu http://www.cnblogs.com/fox-yu/