虚拟化:
是一种资源的管理技术,将计算机中的实体资源,进行抽象,然后呈现出来,目的是为了打破实体结构之间的不可分割障碍,使用户以更好的组态使用资源
形象化形容如下:
我有一台电脑 32G内存 2T固态 16核的cpu 需要给4个人使用,
可以使用虚拟化技术将一台高配置的电脑,抽象虚拟出多个低配值的电脑
将三台低配置的电脑通过虚拟化技术,进行资源的重新分配,整合成一台稍微高性能的电脑
沙箱(沙盒):
沙盒 是一个纯净的环境
anaconda 就是以沙盒环境 针对的是Python环境
virtualenv python的虚拟环境
例子:
工作环境中:同时维护或者开发多个项目
A 基于django1.11
B 基于 django2.0
创建两个python环境 一个环境中装django1.11
另一个环境安装 2.0
vm:虚拟机软件 针对的是系统级的虚拟环境
docker: 针对的也是系统级的沙箱环境
提供独立的开发环境
安全性 沙箱环境可以随时关闭,所以不存在感染病毒,使用沙箱环境起到隔离的作用
docker 是一种新的虚拟化技术
特点:速度快 占用资源少
docker使用集装箱的思想,在开发过程中犹豫每个人的教育背景,个人习惯不同,代码水平不一致。有的程序写在linux环境,有的代码写在windows环境,在开过程中没有问题,但是项目部署上线时,由于前面几种原因,会导致各种兼容问题,会大大影响项目的部署时间。为了避免以上问题,我们可以创建相同的虚拟环境,同时都在虚拟环境中开发,上线部署时,只需要将环境整个打包部署
vm
docker
vm能够完成的事情 docker也能做 并且占用资源更少
vm 在使用时 必须创建独立系统和系统内核
docker 不会创建新的系统内核 使用源系统的内核
vm 在装虚拟环境的时候 需要重新创建一个系统的内核
docker 不会重新创建一个系统内核 和主机共用一个内核 节省了环境部署所损耗的资源,将这些资源给应用去使用
docker 速度更快 占用资源更少
server | 服务器 |
---|---|
host os | 系统 |
hypervisor | 管理程序 |
docker Engine | 引擎 |
Guest os | 虚拟机系统 |
bins.libs | 系统依赖组件 |
app | 应用 |
centos yum源中提供docker安装包
yum install docker -y
1.查看版本
docker --version
systemctl status docker
3.启动和关闭服务
systemctl start docker
systemctl stop docker
镜像 images 封装好的一个docker实例,包含运行应用的依赖环境,和程序,只读的(相当于一个文件夹,但这个文件夹包含应用运行的依赖环境和程序,可以复制到别的地方,复制的就是镜像)
是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器,是由一层一层的系统文件组成
容器 container 用来打开,并使用景象,创建了虚拟环境。每个容器间是相互隔离的
仓库 registry 用来存放镜像
镜像一般存在远程仓库 docker hub
仓库分为公共库 私有库
docker images
查看远程仓库的镜像 格式: docker search 镜像名
docker search mysql
格式:docker pull 镜像的名字
镜像操作 两个: 一个拉取镜像pull 上传镜像push
downloading | 正在下载 |
---|---|
download complete | 下载完成 |
waiting | 等待下载 |
Pull complete | 下载完成 |
格式:
docker tag 仓库名 新名字
格式:
docker image rmi 镜像id/镜像名
docker rmi 镜像id或者镜像名
格式:
docker create -it --name=名字 镜像id /bin/bash
-i | 交互式 |
---|---|
-t | 容器启动后进入命令行 |
–name | 要创建的容器名字 |
镜像id | 使用镜像的id |
/bin/bash | 交互式采用shell终端 |
-i 和-t一起运行容器创建后就能登陆进去,并且分配一个伪终端
格式:
docker run -dit --name 容器名 镜像id /bin/bash
-d | 守护进程,守护容器,exit也不会停止 |
---|---|
run | 创建容器后启动 |
格式:
docker start -ai 容器名
-a | 将当前的输入 输出连接到容器上面 |
---|---|
-i | 将当前的输入连接到容器上 |
start | 开始 |
格式:
docker exec -it 容器名 /bin/bash
exec | 进入容器 |
---|---|
/bin/bash | 进入执行的第一个命令 交互式采用shell终端 |
查看正在运行的容器
格式:
docker ps
docker container ls
查看所有的容器
docker ps -a
docker container ls --all
格式:
docker container stop 容器id或者容器名字
格式:
docker container start 容器id或者容器名字
格式:
docker container rm 容器ID或者容器名字
格式:
docker container kill 容器ID或者容器名字
第一步:
docker run -itd --name mysql01 -e MYSQL_ROOT_PASSWORD=密码 镜像id
刚下的mysql镜像要通过-e 指定一个密码
docker exec -it mysql01 /bin/bash
第三步:
mysql -uroot -p123456
conda create -n 虚拟环境的名字 python=指定版本
activate 虚拟环境名字
退出 deactivate