3-Docker应用部署
Docker应用部署一般部署步骤
搜索镜像
拉取镜像
创建容器
操作容器
部署MySQL前文说到,Docker容器本身不能直接与外部机器通信,其只能与宿主机直接通信,而宿主机又可以直接与外部机器通信,所以想要访问Docker容器,就可以将Docker容器的端口映射到宿主机的端口上(一般都对应到相同端口),这样就可以利用宿主机的端口间接访问Docker容器,即端口映射
12345678910111213# 搜索镜像docker search mysql# 拉取镜像docker pull mysql# 创建容器,注意创建容器前,在根目录下创建mysql文件夹并进入该目录下,后续数据卷的安装在/root/mysql下进行docker run -id \-p 3306:3306 \ # 配置端口映射--name c_mysql \-v $PWD/conf:/etc/mysql/conf.d \ # 配置配置文件数据卷,$PWD表示当前所在文件夹路径-v $PWD/logs:/logs \ # 配置日志数据卷-v $PWD/data:/var/lib/mysql \ # 配置存放数据的数据卷 ...
2-Docker容器数据卷
Docker容器数据卷数据卷概述实际开发中,数据的持久化以及数据交互都是十分重要的功能,所以Docker需要处理以下问题
Docker容器删除后,容器中的应用数据是否被删除
Docker容器与外部机器(宿主机与网络机器)间如何进行文件交互
Docker容器之间如何进行文件的交换
面对以上问题,Docker提供了数据卷的概念,数据卷是宿主机中的一个目录或文件,当容器与数据卷目录绑定(挂载)后,双方对数据卷的修改会立即同步,数据卷与容器不是一一对应的关系,一个数据卷可以挂载多个容器,一个容器也可以被挂载多个数据卷
数据卷的作用
保证容器数据的持久化
实现容器与宿主机之间的文件交换
实现Docker容器之间的文件交换
配置数据卷配置数据卷只需要在创建容器时利用-v参数指定宿主机路径与容器路径的挂载关系
1234# 创建容器时,使用-v参数设置数据卷docker run -it --name test1 -v 宿主机目录(或文件):容器内目录(或文件) ...# 例如:docker run -it --name centosTest1 -v /root/data:/root/data_c ...
1-Docker概述
Docker概述
Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。
Docker安装步骤(centos)
1234567891011121314# 1. 更新所有yum包到最新yum update# 2. 安装所需软件包,yum-utils提供yum-config-manager功能另两个是devicemapper驱动所依赖的yum install -y yum-utils \ device-mapper-persistent-data \ lvm2# 3. ...
13-DCL用户管理语言
DCL-用户管理语言1234567891011121314151617181920212223242526272829303132333435363738show DATABASES;# 切换到mysql数据库use mysql;# 查看user表SELECT * from user;# 创建用户语法# CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';# localhost表示本地主机 通配符%表示任意主机(可远程访问)CREATE USER 'renboyu'@'%' IDENTIFIED BY 'renboyu01';# 修改密码# UPDATE USER SET authentication_string=PASSWORD('新密码')WHERE USER='用户名';# PASSWORD()函数为加密函数UPDATE user SET authentication_string = ...
12-分支结构,循环结构
分支结构IF函数12345678910111213141516# 流程控制结构/*顺序结构:程序自上而下依次执行分支结构:程序从两条或多条路径中选择一条去执行循环结构:程序在满足一定条件基础上,重复执行一段代码*/# 分支结构# IF(expr1,expr2,expr3)函数功能:实现简单的双分支语法:SELECT IF(expr1,expr2,expr3)执行顺序:如果表达式1成立,则执行表达式2,否则执行表达式3可以存储在程序任何地方
CASE结构12345678910111213141516171819202122232425262728293031323334353637# CASE结构语法:CASE case_value WHEN when_value THEN statement_list WHEN when_value THEN statement_list ... ELSE statement_listEND CASE;# 情况1:类似于Java中的switch语句,一般用于实现等值判断# 情况2:类似于Java中的多重IF语句,一般用于实现区间判断# 特点:可 ...
11-存储过程和函数
存储过程123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153# 存储过程和函数/*存储过程和函数:类似Java中的方法好处:1. 提高代码重用性2. 简化操作*/# 存储过程/*含义:一组预先编译好的SQL语句集合好处:1. 提高代码重用性2. 简化操作3. 减少编译次数4. 减少数据库服务器的连接次数,提高效率*/# 存储过程创建CREATE P ...
10-变量
系统变量12345678910111213141516171819202122232425262728293031323334353637383940414243444546# 变量/*系统变量 全局变量 会话变量自定义变量 用户变量 局部变量*/# 一。系统变量# 变量由系统提供,不由用户定义,属于服务器层面/*使用语法:(不写global,session默认使用会话变量)1. 查看所有系统变量SHOW GLOBAL VARIABLES; # 查看全局变量SHOW 【SESSION】 VARIABLES; # 查看会话变量2. 查看满足条件的部分系统变量SHOW GLOBAL VARIABLES LIKE 'CHAR';SHOW 【SESSION】 VARIABLES LIKE 'CHAR';3. 查看指定的某个系统变量SELECT @@global.系统变量名;SELECT @@【SESSION.】系统变量名;4. 为某个具体的系统变量赋值# 方式1SET 【session.】系统变量名=值; # 为会话变量赋值SE ...
9-视图
视图含义虚拟表,可以和普通表一样使用。MySQL5.1版本出现的新特性,是通过表动态生成的数据,也就是说行和列的数据都来自定义识图的查询中使用的表,只保存sql逻辑,不保存查询结果
类似于Java中包装一个方法/函数
应用场景
多个地方用到同样的查询结果
该查询结果使用的sql语句较为复杂
视图的创建视图的好处
有利于重用sql语句
简化复杂的sql操作,不必知道它的查询细节
保护数据,提高安全性
1234567891011121314151617181920212223242526272829303132333435# 视图的创建USE myemployees;/*语法:CREATE VIEW 视图名AS 查询语句;*/# 查询邮箱中包含a字符的员工名,部门名,和工种信息# 创建视图(这里使用的sql92连接查询方法,还可以使用sql99 JOIN ON)CREATE VIEW v1ASSELECT CONCAT(first_name,' ',last_name) 姓名, department_name 部门名,job_title 工种,email FROM ...
8-TCL事务控制语言
TCL语言 事务控制语言Transaction Control Language 事务控制语言
事务:一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行。每条sql语句都是相互依赖的整个单元作为一个不可分割的整体,如果单元中某条sql语句执行失败或者产生错误,则整个单元将会回滚。所有收到影响的数据将会返回到事务开始以前的状态。如果单元内所有语句均正常执行,则事务被成功执行
案例:转账事务转账过程分为:1. 付款方余额修改 2. 收款方余额修改整个事务中两条语句必须全部正常执行,或者都不执行,否则就会发生逻辑上的错误
事务的ACID实现
Atomicity 原子性:原子性是指事务是一个不可分割的工作单元,事务中的操作要么都发生,要么都不发生
Consistency 一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态
Isolation 隔离性:事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰
Durability 持久性:持久性指一个事务一旦被提交,它 ...
7-标识列或自增长列
123456789101112131415161718192021222324252627282930313233# 标识列/*又称为自增长列含义:可以不用手动插入值,系统提供默认的序列值特点:1. 标识列必须和键搭配(主键,唯一,外键等)2. 一个表中只能有一个标识列3. 标识列的类型只能是数值型(整型+浮点型)*/# 创建表时,设置某列为标识列DROP TABLE IF EXISTS tab_identify;CREATE TABLE tab_identify( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20));TRUNCATE TABLE tab_identify;INSERT INTO tab_identify VALUES(NULL,'Leslie');INSERT INTO tab_identify VALUES(NULL,'Jesie');SELECT * FROM tab_identify;SET auto_increment_increment=3; # 设置步长,修 ...