• 不足之处欢迎留言

一、虚拟化

打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。

解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用

虚拟机等等。

1、Hypervisor

(1)定义:虚拟机监视器(Virtual Machine Monitor),是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,它可以协调访问服务器上的所有物理设备和虚拟机。

(2)Hypervisor是所有虚拟化技术的核心。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。使软硬件架构和管理更高效、更灵活,硬件的效能能够更好地发挥出来。

(3)常见产品:VMware、KVM、Xen等等

虚拟机:

虚拟盘安装docker 虚拟化docker_Hypervisor

Docker容器:

虚拟盘安装docker 虚拟化docker_虚拟化_02

2、容器技术

(1)区别:管理程序虚拟化(Hypervisor)通过中间层将一台或者多台独立的机器虚拟运行与物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。容器技术可以让多个独立的用户空间运行在同一台宿主机上。、

(2)特点:“客居”于操作系统,“操作系统级虚拟化”。容器只能运行与底层宿主机相同或者相似的操作系统,这看起来并不是非常灵活。

(3)精益技术:和传统虚拟化以及半虚拟化相比,容器不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。

二、Docker

1、核心组件

  • Docker客户端
  • Docker服务器
  • Docker镜像: 用于创建 Docker 容器的模板 
  • Docker仓库:用来保存用户构建的镜像的地方,也叫做Registry
  • Docker容器:基于镜像启动

虚拟盘安装docker 虚拟化docker_Docker_03

2、优点

  • Docker 是一个开源的虚拟化容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

简单轻量

快速高效开发

可移植性

鼓励面向服务的体系结构和微服务架构

推荐单个容器只运行一个应用程序或进程

  • VMware和Docker使用对比

虚拟盘安装docker 虚拟化docker_容器_04

3、操作命令

-----------操作docker-----------

  1. 开机启动:systemctl enable docker.service/docker
  2. 启动docker:systemctl start docker
  3. 停止docker:systemctl stop docker
  4. 重启docker:systemctl restart docker
  5. 查看docker状态:systemctl status docker
  6. 查看docker概要信息:docker info

注意:需先启动docker才能进行容器操作!

-----------操作镜像--------------

  • yum install docker                     下载
  • docker -v                             查看版本
  • docker --help                        查看帮助说明
  • docker images                        查询docker中镜像列表
  • docker search ***                    搜索镜像
  • docker pull 镜像名称                拉取镜像
  • docker rmi 镜像名称                 删除镜像

------------操作容器---------------

  • docker run                          创建容器命令
  • --name                                创建容器名称
  • -i                                     创建交互式模式
  • -t                                    给容器创建一个系统的伪终端
  • -d                                    创建一个守护式模式,容器在后台运行,但不会自动登陆容器(-it会创建并登陆进去)
  • -v                                     目录映射 两个参数: 1、 宿主机目录; 2、容器中的目录
  • -p                                    端口映射 两个参数:    1、 宿主机端口; 2、容器中的端口;
  • docker ps                            查询正在运行的容器
  • exit;                                退出容器
  • docker ps -a                         查询历史容器列表
  • docker ps –l                        查询最后运行的容器
  • docker attach containerID/name      进入容器:缺点一次进入,退出后容器就关闭了;
  • docker exec -it containerID/name    进入容器:退出后,容器还在运行:【企业中用这种命令比较多】
  • docker start containerID/name        启动运行过的容器
  • docker stop containerID/name        停止容器
  • docker rename 原名 新名                容器重命名
  • docker rm containerID/name            删除容器
  • docker inspect imageID/name            查询容器内部信息
  • docker inspect -f='' imageID/name    查询容器内部具体信息
  • docker commit 容器名 镜像名         把容器打成镜像
  • docker save 镜像名 > /root/压缩包名 把镜像打成压缩包
  • docker load < /root/压缩包名         把镜像压缩包解压成镜像
  • docker tag 镜像 仓库名                把镜像放在仓库中
  • docker push 镜像仓库地址:tag         把仓库push推送到自己hub.docker中
  • 注意:在CentOS系统中docker下载一定要配置加速器;

4、拉取镜像(加速器)

国内访问docker hub速度很慢,使用ustc镜像加速器下载镜像

(1)编辑:vi /etc/docker/daemon.json

(2)输入:"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

(3)重启docker--systemctl restart docker

(4)拉取镜像-----docker pull 镜像

(5)查看镜像-----docker images

5、操作容器

查看

(1)查看容器列表:docker ps -a

(2)查看正在运行的容器:docker ps

创建

(1)docker run -it --name 名称 镜像 /bin/bash------创建并登陆容器(exit退出容器随之关闭)

(2)docker run -itd --name 名称 镜像 /bin/bash----创建守护式容器(容器在后台一直运行,不会直接登陆)

(3)docker run -itd --name 名称 -p(端口映射) -e(设置初始密码) 镜像:版本(如果不加上已经有的镜像版本号,则会再次pull最新的镜像,并根据最新的镜像来创建容器)

登陆

(1)docker attach id或名称-------------------------exit退出时,容器停止

(2)docker exec -it id或名称 /bin/bash-----------exit退出时,容器不停(用的较多)

退出

exit或Ctrl+D

启动

(1)docker start containerId/name(容器名称不能重复故唯一)

停止

(1)docker stop containerId/name

6、docker环境下部署应用

在docker中部署应用可以有多种方式

方案一:根据系统镜像创建Docker容器,这个时候Docker就相当于一个虚拟机,然后进入容器部署对应的应用。具体步骤如下:

  1. 启动Centos系统镜像的容器my_container;
  2. 在该容器中部署应用程序,例如:Tomcat、Nginx等;
  3. 将部署完的my_container提交为新的镜像;
  4. 然后根据新的镜像去创建容器;
  5. 这个镜像可以打包,导入到其他的Docker服务器上

方案二:直接通过docker pull拉取别人提交好的tomcat、nginx等应用程序镜像,然后基于这些镜像去创建容器。

6.1、方案一(以部署Tomcat为例)

步骤:

1、从docker hub上拉取镜像

docker pull centos:7

2、列出已有的镜像

docker images

3、创建交互式容器

docker run -it --name=mycentos centos:7 /bin/bash

Tomcat需要jdk环境

4、在容器中安装jdk

1)将jdk上传到宿主机中

XShell:Ctrl+Alt+F

CRT:Alt+P

2)将jdk从宿主机复制到容器中

docker cp jdk-7u75-linux-x64.tar.gz mycentos:/

3)容器中解压,并移动至 /usr/local/jdk7 目录下

  • 进入容器
  • tar -zxf jdk-7u75-linux-x64.tar.gz
  • mv jdk1.7.0_75/ /usr/local/jdk7

4)配置环境变量

  • vi etc/profile
  • shift+g(末尾)加: export JAVA_HOME=/usr/local/jdk7        export PATH=$JAVA_HOME/bin: $PATH
  • 注:一些参考资料中会在$PATH前有空格,编译会报错。

5、在容器中安装Tomcat

1)将Tomcat上传到宿主机

2)将Tomcat从宿主机复制到容器中

3)容器中解压并移动至 /usr/local/tomcat

6、将此容器提交为新的镜像

  • docker commit mycentos mytomcat
  • docker images查看

7、将新的镜像打包

  • docker save mytomcat > /root/mytomcat.tar.gz
  • 包含jdk、tomcat

8、打包好传到别的机器加载镜像

docker load < /root/mytomcat.tar.gz

9、根据新的镜像创建Tomcat容器

做端口映射:

docker run -itd --name mytomcat2 -p 8888:8080 mytomcat /bin/bash

10、登录容器,启动Tomcat进程

  • docker exec -it mytomcat2 /bin/bash
  • 编译:source /etc/profile
  • 启动:/usr/local/tomcat/bin/startup.sh

11、浏览器访问Tomcat

服务器ip:http://192.168.142.128:8888

虚拟盘安装docker 虚拟化docker_容器_05

6.2、方案二(以部署Tomcat为例)

步骤:

1、直接拉取Tomcat镜像

docker pull tomcat

2、查看镜像

docker images

3、根据镜像创建守护式容器并设置端口映射

docker run -itd --name mytomcat2 -p 8889:8080 tomcat /bin/bash

4、浏览器访问

http://192.168.142.128:8889