1、概念介绍
虚拟化:是一种资源管理的技术,将计算机中的实体资源,进行抽象,然后呈现出来,目的是为了打破实体结构之间的不可分割障碍,使用户更好的组态使用资源
沙箱:又称沙盒 是一个纯净的环境
anaconda 就是以沙盒环境 针对的是Python环境
virtualenv python的虚拟环境
工作环境中:同时维护或者开发多个项目
A 基于django1.11
B 基于 django2.0
创建两个python环境 一个环境中装django1.11
另一个环境安装 2.0
vmware(vm):虚拟机软件 针对的是系统级的虚拟环境
docker: 针对的也是系统级的沙箱环境
提供独立的开发环境
安全性 沙箱环境可以随时关闭,所以不存在感染病毒,使用沙箱环境起到隔离的作用
docker 是一种新的虚拟化技术
特点:速度快 占用资源少
2、docker简介
docker使用集装箱的思想,在开发过程中犹豫每个人的教育背景,个人习惯不同,代码水平不一致。有的程序写在linux环境,有的代码写在windows环境,在开过程中没有问题,但是项目部署上线时,由于前面几种原因,会导致各种兼容问题,会大大影响项目的部署时间。为了避免以上问题,我们可以创建相同的虚拟环境,同时都在虚拟环境中开,上线部署时,只需要将环境整个打包部署
3、docker和vm的区别
docker
vm
vm能够完成的事情 docker也能做 并且占用资源更少
server 服务器
host os 系统
hypervisor 管理程序
docker Engine 引擎
Guest os 虚拟机系统
bins.libs 系统依赖组件
app 应用
vm 在使用时 必须创建独立系统和系统内核
docker 不会创建新的系统内核 使用源系统的内核
4、docker的安装
centos yum源中提供docker安装包
yum install docker -y
5、docker的基本操作
查看版本
查看服务状态
systemctl status docker
启动和关闭服务
systemctl start docker
systemctl stop docker
6、docker的基本使用
镜像 images 封装好的一个docker实例,包含运行应用的依赖环境,和程序,只读的
容器 container 用来打开,并使用镜像,创建了虚拟环境
仓库 registry 用来放镜像
镜像一般存在远程仓库 docker hub 仓库分为公共库 私有库
(1)镜像的操作:
<1>查看本地镜像
<2>查找镜像
docker search mysql 查看远程仓库的镜像
<3>配置源
是为了加快下载速度,不配置也行
docker的源是在 docker hub 属于外网 所以我们乐意配置成国内源
docker配置源文件 :/etc/docker/daemon.json
打开配置文件添加
{“registry-mirrors”: [“https://3laho3y3.mirror.aliyuncs.com”]}
保存并推出
重启服务
<4>拉取镜像
docker pull 镜像的名字
镜像操作 两个 一个拉取镜像pull 上传镜像push
拉取有mysql应用的镜像
<5>修改本地镜像的仓库名
docker tag 仓库名 新名字
<6> 删除镜像
docker image rm 镜像id/镜像名
docker rmi 镜像id或者镜像名
<7>制作镜像
下载一个纯净版的centos镜像
创建容器并运行镜像
进入镜像并安装python3
和之前在Linux下装python3一样
制作镜像
先退出容器
然后 docker commit -m ’描述’ -a ’作者’ 容器名 镜像名:标签名
查看是否有打包后的镜像
打包镜像
需要注意打包后的路径,不指定路径则在当前目录下
docker save -o 压缩后的文件名.tar 镜像名
使用镜像自己打包后的镜像
docker load < 压缩包(如果不在当前位置需要指定压缩包的路径)
测试是否没问题
通过导入的镜像创建一个容器
(2)容器的操作:
第一种:<1>创建容器,不启动容器
docker create -it --name=名字 镜像id /bin/bash
-i交互式
-t容器启动后进入命令行
--name 容器的名字
使用镜像的id
/bin/bash 交互时采用shell终端
<2>启动容器
docker start -ai 容器名 启动并进入容器
-a 将当前的输入 输出连接到容器上面
-i 交互式
<3>退出容器
exit
第二种:<1>创建容器,并启动容器
docker run -dit --name 容器名 镜像id /bin/bash
-d守护进程,守护容器
<2>进入容器
docker exec -it 容器名 /bin/bash
<3>退出容器
exit
<4>查看正在运行的容器
docker ps
docker container ls
<5>查看所有的容器
docker ps -a
docker container ls --all
<6>关闭容器
docker container stop 容器id或者容器的名字
<7>启动容器
docker container start 容器id或者容器名字
<8>删除容器
注意:正在运行的容器无法删除,需先关闭
docker container rm 容器ID或者容器名字
<9>杀死容器(与关闭容器效果一样)
docker container kill 容器ID或者容器名字
使用mysql镜像
docker run -itd --name mysql01 -e MYSQL_ROOT_PASSWORD=密码 镜像id
docker exec -it mysql01 /bin/bash
使用canda创建虚拟环境
conda create -n 虚拟环境的名字 python=指定版本
anaconda
virtualenv
这两个是针对软件级的差创建虚拟环境
VMware
docker
这两个是针对系统级的创建虚拟环境
(2)仓库registry使用:
Registry 用于存放镜像
公有仓库 所有人可以访问下载镜像的仓库
私有仓库 规定范围内可以访使用的库
<1>公有库
Docker 官网推出的docker仓库的一个公共服务器,在上面可以有公有和私有的镜像,目前已经有1万5千多的镜像在这个服务器上面,我们可以通过dockerhub来管理自己的镜像
Docker hub 的使用
官网地址:https://hub.docker.com/
将我们自己制作的镜像上传
在命令行登陆
上传
1.更改镜像名
docker image tag 旧名字:标签名 新名字:标签名
注意:新名字需要和注册的账号里面的仓库名一样
如果标签名不加,默认标签名上传后为latest
2.push
docker Push 镜像名:上传到仓库中的镜像名
下载
将自己公共库中的镜像下载到本地(先登录docker login)
<2>拓展:私有库的使用
准备工作
1.创建私有库,要使用registry镜像
docker pull registry
2.准备一台电脑作为仓库服务:10.10.107.84
保证服务启动
开启防火墙 端口映射需要使用防火墙
安全模式0
创建虚拟仓库
服务端:
1.使用registry镜像 创建一个容器
docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry
-p 端口号映射
-v 路径映射 将容器的默认存放位置registry目录映射到主机的 opt/registry 此目录会自己创建
映射目录的目的:
私有仓库可以存放镜像,如果容器被重启了镜像会消失
创建一个容器将容器的端口号3306映射到主机的端口号3306
docker run -dit -p 3306:3306 --name=容器名 /bin/bash
客户端:
docker新版本后只能使用https访问,因此需要修改配置允许http访问
配置文件目录:/etc/sysconfig/docker
在options后添加 --insecure-registry 服务端ip地址:5000
–insecure-registry 10.10.107.10.10.107.121:4000
重启docker
上传镜像
修改镜像名
docker tag 旧名字 ip:5000/name
执行
docker Push 镜像名
测试拉取
删除原镜像
Pull 10.10.107.84:5000/name
docker images
docker search mysql
docker pull 镜像名
docker push 镜像名
docker image rm 镜像名
docker tag 旧名 新名
docker create -it --name=容器名 镜像id /bin/bash
docker start -ai 容器名 #启动并进入
exit
docker run -dit --name 容器名 镜像id /bin/bash
docker exec -it 容器名 /bin/bash
exit
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或者容器名
制作镜像(可以不加标签名 ,默认标签为latest)
docker commit -m '描述' -a '作者' 容器名 镜像名:标签名
打包镜像
docker save -o 压缩的文件名.tar 镜像名
使用打包的镜像
dacker load < 压缩包
web服务器优化
两台mysql
主master:10.10.107.121
从slave:10.10.107.84
1.关闭防火墙和安全模式
2.下载mariadb yum install mariadb-server
3.使用yum安装,默认是宽松模式,任何账号没有密码都可以登陆, 配置生产环境
执行 mysql_secure_installation
4.重启服务
1.创建库和表
2.导出表结构传给从机并导入
导出数据 退出数据库 执行
mysqldump -uroot -p demo>/opt/demo.sql
传送给从机
scp /opt/demo.sql [email protected]:/opt/
操作从机
创建一个demo库 然后退出数据库
mysql -uroot -p demo
5.在主机配置权限 授权一个账户可以连接主机
grant replication slave on . to ‘root’@’%’ identified by ‘123456’ with grant option;
刷新授权
flush privileges
6.修改主机的配置文件
/etc/my.cnf
在第三行添加
server-id=1 # 设置服务器id 1代表主服务器
log_bin=mysql-bin? # 启动二进制日志
binlog-do-db=数据库名字 # 需要同步的数据库名字
binlog-ignore-db=mysql # 不同步系统库
7.保存退出重启服务
systemctl restart mariadb
8.查看状态
进入数据库查看主机的日志信息
show master status
1.关闭防火墙和安全模式
2.下载mariadb yum install mariadb-server
3.使用yum安装,默认是宽松模式,任何账号没有密码都可以登陆, 配置生产环境
执行 mysql_secure_installation
4.查看下库和表是否已经导入
5.修从机配置文件
Server-id=2 # 设置服务器id 1代表主服务器
log_bin=mysql-bin? # 启动二进制日志
Binlog-do-db=数据库名字 # 需要同步的数据库名字
Binlog-ignore-db=mysql # 不同步系统库
6.保存推出重启服务
7.进入数据库
执行
Change master to master_host=’ip’,master_user=’root’,mater_password=’’,master_log_file=’日志文件的名字’,master_log_pos=大小;
8.slave执行开始备份:
Slave start
Show slave status\g;
之后在主数据库中添加数据后,从数据库会自动添加数据