虚拟机
- 1、虚拟机VM介绍
- 2、环境准备及docker介绍
- 3、Virtual Box
- 4、smartTTY
- 5、docker操作命令
- 6、区分容器和虚拟机
- 7、镜像(Mirroring)
- 8、沙盒(sandbox)
- 9、Kubernetes
1、虚拟机VM介绍
- 具有完整硬件系统功能的完整计算机系统
- 常见虚拟机:Java虚拟机,Linux虚拟机,windows虚拟机
- 流行的虚拟机软件有:VMware、Virtual Box、Virtual PC
2、环境准备及docker介绍
1)环境准备
- 我的环境:win10
- 软件:VirtualBox-5.1.26、SmarTTY
- linux版本的虚拟机文件:centos7-atguigu.ova
2)docker介绍
- 一个开源的应用容器引擎
- Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。
- Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。
- Docker是基于原生多cpu系统开发出来的容器,多任务处理,多资源整合天生强项
- 开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上
- 一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
3、Virtual Box
管理—》导入虚拟电脑—》将
所在位置载入—>启动
–》输入账号+密码–》ip addr查看ip(根据你的网络而选无线还是有线【在设备-》网络中修改】)
4、smartTTY
先连接:
1)uname -v查看版本(》=3.10)
2)安装docker:yum install docker,中途遇到操作选y(yes)
直到出现complete为完成
3)启动docker:systemctl start docker
若出现下图错误Job for docker.service failed because the control process exited with error code. See “syste
mctl status docker.service” and “journalctl -xe” for details.:
若没出现错误则跳到步骤4)。
输入systemctl status docker.service,出现下图:
解决方法:
1)vi /etc/sysconfig/docker
2) 修改(点击i为insert模式即可编辑,修改完成后esc:wq退出编辑)
3)systemctl start docker启动docker不再报错
4)docker -v
5)systemctl enable docker
5、docker操作命令
1)docker search xxx;
如:docker search mysql、docker search redis、tomcat…
搜索出下面镜像
或者去docker hub仓库直接搜索
2)docker pull xxx:tag
tag是可选的,多为软件的版本,默认是latest
如:docker pull mysql:5.5
3)docker images查看所有的本地镜像
4)docker rmi image-id删除指定本地镜像
5)docker run
6)docker ps
7) docker stop
8)docker start
9)docker rm
6、区分容器和虚拟机
- 我们用的传统虚拟机如 VMware , VisualBox 的需要模拟整台机器包括硬件,每台虚拟机都需要有 自己的操作系统 ,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
- 每个虚机中都有一个独立的Kernel 【连接操作系统(OS)和硬件(Hardware)的一个中间组件】,而容器只有一个操作系统,即只有一个独立的Kernel
- VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。docker不同于VM,只包含应用程序以及依赖库
- 而容器技术是和我们的宿主机 共享 硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
- 容器可以理解为进程沙盒(sandbox)
- 容器技术是实现 操作系统虚拟化 的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,我们可以:
- 轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,
- 从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。
- 容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。
- 容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。
容器优点:
- 容器架构降低了硬件成本
- 更快速的部署开发/测试/生产环境
- 更简便的维护开发/测试/生产环境
- 与微服务架构更为契合
7、镜像(Mirroring)
8、沙盒(sandbox)
- 沙盒是一种安全机制,用于防止不同应用之间互相访问。
- 沙盒的作用就是存储数据,每个沙盒就相当于每个每个应用的系统目录。
- iOS系统下每个应用都有自己对应的沙盒,每个沙盒之间都是相互独立的,互不能访问(没有越狱的情况下)。
9、Kubernetes
- 一套成熟的商用服务编排解决方案
- Kubernetes 及其整个生态系统(工具、模块、插件等)均使用 Go 语言编写,从而构成一套面向 API、可高速运行的程序集合,这些程序文档精良、易于参与贡献或在其上构建应用程序。
- Pod是Kubernetes最小的调度单元,所以组件介绍就从Pod【实例或者服务实例】开始。
- Pod是一组容器的集合,这些容器共享IPC,Network和UTS,也就是这些容器相互之间可以共享进程信息,网络信息和主机信息。这一组容器相互之间可以通过Localhost互访。