python全栈开发第十一天(Linux操作系统,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简介
在这里插入图片描述
    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 < 压缩包


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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.重启服务

1.创建库和表

2.导出表结构传给从机并导入
    导出数据 退出数据库 执行 
    mysqldump  -uroot  -p demo>/opt/demo.sql
    传送给从机
    scp /opt/demo.sql  root@10.10.107.121:/opt/
    操作从机
    创建一个demo库 然后退出数据库
    mysql  -uroot  -p demo</opt/demo.sql

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;
在这里插入图片描述
之后在主数据库中添加数据后,从数据库会自动添加数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值