python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)

第十一天

    • docker
    • mysql读写分离
      • 对主数据库操作
      • 对从据库操作

docker

1、概念介绍

虚拟化:是一种资源管理的技术,将计算机中的实体资源,进行抽象,然后呈现出来,目的是为了打破实体结构之间的不可分割障碍,使用户更好的组态使用资源

沙箱:又称沙盒 是一个纯净的环境
    

  anaconda 就是以沙盒环境  针对的是Python环境
  virtualenv  python的虚拟环境
  工作环境中:同时维护或者开发多个项目
        A    基于django1.11      
        B    基于 django2.0
        创建两个python环境 一个环境中装django1.11
                         另一个环境安装 2.0
                         
vmware(vm):虚拟机软件 针对的是系统级的虚拟环境
docker: 针对的也是系统级的沙箱环境
提供独立的开发环境
安全性 沙箱环境可以随时关闭,所以不存在感染病毒,使用沙箱环境起到隔离的作用
 
docker 是一种新的虚拟化技术
特点:速度快 占用资源少 

2、docker简介
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第1张图片
    docker使用集装箱的思想,在开发过程中犹豫每个人的教育背景,个人习惯不同,代码水平不一致。有的程序写在linux环境,有的代码写在windows环境,在开过程中没有问题,但是项目部署上线时,由于前面几种原因,会导致各种兼容问题,会大大影响项目的部署时间。为了避免以上问题,我们可以创建相同的虚拟环境,同时都在虚拟环境中开,上线部署时,只需要将环境整个打包部署

3、docker和vm的区别

docker
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第2张图片
vm
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第3张图片
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 查看远程仓库的镜像

python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第4张图片

<3>配置源
是为了加快下载速度,不配置也行
docker的源是在 docker hub 属于外网 所以我们乐意配置成国内源
docker配置源文件 :/etc/docker/daemon.json
打开配置文件添加
{“registry-mirrors”: [“https://3laho3y3.mirror.aliyuncs.com”]}
保存并推出
重启服务

<4>拉取镜像
docker pull 镜像的名字
镜像操作 两个 一个拉取镜像pull 上传镜像push
拉取有mysql应用的镜像
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第5张图片

<5>修改本地镜像的仓库名
docker tag 仓库名 新名字

<6> 删除镜像
docker image rm 镜像id/镜像名
docker rmi 镜像id或者镜像名

<7>制作镜像
下载一个纯净版的centos镜像
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第6张图片
在这里插入图片描述
创建容器并运行镜像
在这里插入图片描述
进入镜像并安装python3
和之前在Linux下装python3一样

制作镜像
先退出容器
然后 docker commit -m ’描述’ -a ’作者’ 容器名 镜像名:标签名
查看是否有打包后的镜像
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第7张图片
打包镜像
需要注意打包后的路径,不指定路径则在当前目录下
docker save -o 压缩后的文件名.tar 镜像名
在这里插入图片描述
使用镜像自己打包后的镜像
docker load < 压缩包(如果不在当前位置需要指定压缩包的路径)
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第8张图片
测试是否没问题
通过导入的镜像创建一个容器
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第9张图片

(2)容器的操作:
第一种:<1>创建容器,不启动容器
docker create -it --name=名字 镜像id /bin/bash
    -i交互式
    -t容器启动后进入命令行
    --name 容器的名字
    使用镜像的id
    /bin/bash 交互时采用shell终端
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第10张图片
<2>启动容器
docker start -ai 容器名     启动并进入容器
    -a 将当前的输入 输出连接到容器上面
    -i 交互式
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第11张图片
<3>退出容器
exit

第二种:<1>创建容器,并启动容器
docker run -dit --name 容器名 镜像id /bin/bash
    -d守护进程,守护容器
在这里插入图片描述
<2>进入容器
docker exec -it 容器名 /bin/bash
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第12张图片
<3>退出容器
exit

<4>查看正在运行的容器
docker ps
docker container ls

<5>查看所有的容器
docker ps -a
docker container ls --all

<6>关闭容器
docker container stop 容器id或者容器的名字
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第13张图片

<7>启动容器
docker container start 容器id或者容器名字
在这里插入图片描述
<8>删除容器
注意:正在运行的容器无法删除,需先关闭
docker container rm 容器ID或者容器名字
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第14张图片
<9>杀死容器(与关闭容器效果一样)
docker container kill 容器ID或者容器名字
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第15张图片

  使用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/

注册并创建自己的仓库
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第16张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第17张图片
会发送邮件到你的邮箱 激活
登录
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第18张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第19张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第20张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第21张图片

python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第22张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第23张图片
将我们自己制作的镜像上传
在命令行登陆
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第24张图片
上传
        1.更改镜像名
        docker image tag 旧名字:标签名 新名字:标签名

注意:新名字需要和注册的账号里面的仓库名一样
     如果标签名不加,默认标签名上传后为latest

在这里插入图片描述
        2.push
        docker Push 镜像名:上传到仓库中的镜像名
在这里插入图片描述
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第25张图片
下载
将自己公共库中的镜像下载到本地(先登录docker login)
在这里插入图片描述
<2>拓展:私有库的使用
准备工作
1.创建私有库,要使用registry镜像
docker pull registry
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第26张图片
2.准备一台电脑作为仓库服务:10.10.107.84
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第27张图片
保证服务启动
开启防火墙 端口映射需要使用防火墙
安全模式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
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第28张图片
在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 < 压缩包


mysql读写分离

web服务器优化
两台mysql
主master:10.10.107.121
从slave:10.10.107.84

对主数据库操作

1.关闭防火墙和安全模式
2.下载mariadb yum install mariadb-server
3.使用yum安装,默认是宽松模式,任何账号没有密码都可以登陆, 配置生产环境
执行 mysql_secure_installation
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第29张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第30张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第31张图片
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第32张图片
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
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第33张图片
6.修改主机的配置文件
/etc/my.cnf
在第三行添加
server-id=1 # 设置服务器id 1代表主服务器
log_bin=mysql-bin? # 启动二进制日志
binlog-do-db=数据库名字 # 需要同步的数据库名字
binlog-ignore-db=mysql # 不同步系统库
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第34张图片
7.保存退出重启服务
systemctl restart mariadb
8.查看状态
进入数据库查看主机的日志信息
show master status
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第35张图片

对从据库操作

1.关闭防火墙和安全模式
2.下载mariadb yum install mariadb-server
3.使用yum安装,默认是宽松模式,任何账号没有密码都可以登陆, 配置生产环境
执行 mysql_secure_installation

4.查看下库和表是否已经导入
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第36张图片
5.修从机配置文件
Server-id=2 # 设置服务器id 1代表主服务器
log_bin=mysql-bin? # 启动二进制日志
Binlog-do-db=数据库名字 # 需要同步的数据库名字
Binlog-ignore-db=mysql # 不同步系统库
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第37张图片
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;
python全栈开发第十一天(Linux操作系统,docker,mysql读写分离)_第38张图片
之后在主数据库中添加数据后,从数据库会自动添加数据

你可能感兴趣的:(python全栈开发)