数据类型详解
写在前面在了解了MySQL相关的基础信息之后,接下来开始学习MySQL中的数据类型。数据库列表由多列构成,每一个字段指定了不同的数据类型。指定字段的数据类型之后就决定了向字段插入的数据的内容。不同的数据类型决定了MySQL在存储它们的时候使用的方式,以及在使用它们的时候应当选择什么运算符号进行运算。
MySQL支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型,本篇将简单介绍以下数据类型:(1)、整数类型tinyint、smallint、mediumint、int、bigint;(2)、浮点小数类型float和double,定点小数类型decimal。(3)、日期/时间类型:包括year、time、date、datetime和timestamp。(4)、字符串类型:包括char、varchar、binary、varbinary、blob、text、enum和set等。字符串又分为文本字符串和二进制字符串。
整数类型数值型数据类型主要用于存储数字。MySQL提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,则所需要需要的存储空间也就越大。MySQL ...
数据库引擎
写在前面MySQL有多种存储引擎,因此选择合适的存储引擎可以解决一些特殊问题。
初始化数据库MySQL安装完成后,将会在其data目录下自动创建几个必需的数据库,可以使用SHOW DATABASES;语句来查看当前所有存在的数据库,如下所示:
123456789101112mysql> SHOW DATABASES;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || quotes || sys || test_db |+--------------------+6 rows in set (0.22 sec)
可以看到,数据库列表中包含了6个数据库,这些都是MySQL必须的,它描述用户的访问权限,用户经常利用test_db数据库做测试相关工作。
数据库管理创建数据库是在系统磁盘上划分一块区域用 ...
MySQL概述
写在前面MySQL数据库在实际工作中使用的较多,因此有必要抽出一定时间进行一个较为系统的总结,本套笔记是从2017年开始到2019年近三年的使用总结,里面涉及的东西很多,需要仔细学习和体会。
本篇主要学习以下内容:(1)数据库简述;(2)数据库特点;(3)数据库存储数据的特点;(4)数据表;(5)数据类型;(6)主键;(7)SQL语言;(8)数据库访问接口;(9)什么是MySQL;(10)客户端-服务器软件;(11)MySQL版本;(12)MySQL的优势;(13)MySQL5.7新功能;(14)MySQL服务端工具程序;(15)MySQL客户端工具程序;(16)MySQL启动;(17)MySQL登录命令;(18)其他常用命令;(19)MySQL语法规范。
数据库简述数据库发展:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。种类大概有:层次式数据库、网络式数据库和关系型数据库,不同种类的数据库按照不同的数据结构来联系和组织。
数据库是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按照数据结构来存储和管理数据的计算机软件系统,即数据库包含两层含义 ...
基于Dockerfile创建镜像
写在前面在前面我们对Dockerfile文件进行了较为详细的学习,介绍了其中的配置指令和操作指令,那么在编写完Dockerfile文件后,开发者如何基于它来创建镜像呢?本篇就来学习相关内容。
创建镜像在编写完Dockerfile文件后,开发者可以使用docker build [image]命令来创建镜像。其基本的命令格式如下所示:
1dokcer build [OPTIONS] PATH | URL | -
该命令用于读取指定路径下(包括子目录)的Dockerfile,并将该路径下所有数据作为上下文(Context)发送给Docker服务端。Docker服务端在校验Docker格式并通过后,将逐条执行其中定义的指令,注意在遇到ADD、COPY和RUN指令时,会生成一层新的镜像。最终镜像如果创建成功,那么会返回最终镜像的ID。
上下文不能太大,过大会导致发送大量数据给服务端,延缓创建过程,因此除非是生成该镜像所必须的文件,否则请不要放到上下文路径中。前面也说了,默认是使用上下文路径中的Dockerfile,而如果使用的不是上下文中路径中的Dockerfile,那么就可以通过-f参数来指定 ...
使用Dockerfile
写在前面在前面我们简单提到了如何使用Dockerfile文件来创建镜像,鉴于这种方式在日常工作中使用的较为频繁,因此这里专门拿出一篇文章来研究如何使用Dockerfile配置文件来创建镜像。这里会介绍Dockerfile比较典型的基本结构及其支持的众多指令,然后通过这些指令来编写定制镜像的Dockerfile文件,接着便使用该Dockerfile文件来生成镜像,最后会结合笔者自身工作经验来谈谈一些使用Dockerfile的最佳实践。
DockerfileDockerfile是一个由一组指令组成的文本格式的配置文件,其中的每条指令对应Linux中的一条命令,它可以利用给定的指令描述基于某个父镜像来创建新镜像。Dockerfile是由一行行命令语句组成,并且支持以#号开头的注释行。
一般来说,Dockerfile主体内容分为4个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
下面是一个开源的名为renren-fast的项目构建使用的Dockerfile文件,如下所示:
1234567FROM java:8EXPOSE 8080VOLUME /tmpADD renren- ...
端口映射与容器互联
写在前面在前面我们已经掌握了单个容器的管理操作,但是在实际工作中很少是只运行一个容器,而更多的是需要运行多个容器进行协作的情况,因此就需要多个容器之间能够互相访问到对方的服务,那么本篇文章就来学习Docker端口映射与容器互联相关的知识,注意本文所提到的宿主机是指VMware虚拟机,而非本地的Windows系统主机。
端口映射Docker除了通过网络访问外,还提供了其他两个非常方便的功能来满足服务访问的基本需求,一是允许映射容器内应用的服务端口到本地宿主机端口;二是使用互联机制来实现多个容器间通过容器名来快速访问。
从外部访问容器应用 请注意,开发者在启动容器的时候,如果不指定对应的参数,那么在容器外部是无法通过网络来访问容器内的网络应用和服务的。 当容器中运行一些网络应用,要让外部访问这些应用的时候,可以通过-P或者-p参数来指定端口映射。当使用-P(大写)的时候,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口:
12345[root@envythink ~]# docker run -d --name eyou -P training/webap ...
Docker数据管理
写在前面在前面我们详细学习了docker的三大核心概念:镜像、容器和仓库,接下来开始学习如何管理数据。在实际工作中使用docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,此时必然会使用到容器数据管理的各种操作。
容器中的数据管理主要有两种方式:(1)数据卷(Data Volumes),表示容器内数据直接映射到本地主机环境;(2)数据卷容器(Data Volume Containers),表示使用特定容器维护数据卷。
本篇就来学习docker数据管理相关的知识,首先会介绍如何在容器内创建数据卷,并且把本地目录或者文件挂载到容器内的数据卷中,接着介绍如何使用数据卷容器在容器和宿主机、容器和容器之间共享数据,并实现数据的备份和恢复。
数据卷数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将宿主机操作系统目录直接映射进容器,有点类似于Linux操作系统中的mount行为。
数据卷特性数据卷提供很多特性,包括且不限于以下几点:(1)数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便;(2)无论是容器内操作还是本地操作,用户对数据卷内数据的修改 ...
Docker仓库
写在前面Docker三个核心概念已经详细学习了前两个,接下来学习第三个概念—仓库(Repository)。仓库是集中存放镜像的地方,它分为公共仓库和私有仓库。注意仓库(Repository)和注册服务器(Registry)两者是不同的,实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,每个仓库下面有多个镜像,因此你完全可以将仓库理解为是注册服务器上的一个具体的项目或目录。举个例子,对于地址为private-docker.com/ubuntu的仓库来说,前面的private-docker.com是注册服务器地址;后者的ubuntu是仓库名称。通过上面的简单介绍,相信开发者已经对仓库和注册服务器有了基本的认识。在本文中将介绍如何使用Docker Hub官方仓库进行登录、下载、上传等操作,如何使用国内社区提供的仓库来下载镜像,创建和使用私有仓库的相关操作。
Docker Hub官方仓库Docker Hub是Docker官方提供的最大公共镜像仓库。一般来说,开发者需要的镜像都可以在Docker Hub官方仓库上找得到并直接下载。
登录开发者可以执行docker login ...
操作Docker容器
写在前面在前面我们学习了docker镜像相关的知识,接下来再来学习另一个核心概念—容器。容器是镜像的一个运行实例,所不同的是,镜像是静态的只读文件,而容器则是带有运行时需要的可写文件层,同时容器中的应用进程处于运行状态。
可以将其类比到面向对象编程中的对象和类的关系,其中类实例化出对象,正如这里的容器是镜像的一个运行实例一般。
如果认为虚拟机是模拟运行的一整套操作系统,包括内核、应用运行环境、其他系统环境以及跑在上面的应用;那么Docker容器就是独立运行的一个或者一组运用,以及它们必需的运行环境。
接下将围绕容器来进行学习,主要包含创建、启动、终止、删除容器,进入容器内执行操作、通过导入导出操作实现容器迁移等内容。
创建容器用户可以理解为对容器的操作就像直接操作应用一般,非常简单且快速。
新建容器开发者可以使用docker create [container]命令来新建一个容器。
举个例子,开发者可以使用ubuntu:latest镜像创建一个容器,使用的命令如下:
12345[root@envythink ~]# docker create -it ubuntu:latestdffc ...
使用Docker镜像
写在前面镜像是Docker三大核心概念中最重要的一部分,而Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试从默认的镜像仓库中下载(默认使用Docker Hub公共注册服务器的仓库),用户也可以通过配置来使用自定义的镜像仓库,笔者在前面就自定义了镜像仓库。
既然镜像这么重要,那么本篇就围绕镜像这一核心概念来具体介绍相关操作:(1)如何使用pull命令从Docker Hub仓库中下载镜像到本地;(2)如何查看本地已有的镜像信息和管理镜像标签;(3)如何在远端仓库中使用search命令进行搜索和过滤;(4)如何删除镜像标签和镜像文件;(5)如何创建用户定制的镜像并且保存为外部文件;(6)如何往Docker Hub仓库中推送自己的镜像。
获取镜像镜像是运行容器的前提,因此首先是需要获取镜像,开发者可以使用docker [image] pull命令直接从官方的Docker Hub网站上进行获取,该命令的格式为docker [image] pull NAME[:TAG],其中NAME是镜像仓库名称,用来区分镜像,而TAG则是镜像的标签,一般用来表示版本信息,因此通常 ...