中国建设银行官方网站网上银行,头条搜索,上海官网建设费用,陕西营销型网站建设终于按时完成第二篇。本来准备着手讲一些实践#xff0c;但是数据库部分没有讲到#xff0c;部分实践会存在一些问题#xff0c;于是就有了此篇以及后续——数据库容器化。本篇将从SQL Server容器化实践开始#xff0c;并逐步讲解其他数据库的容器化实践#xff0c;中间再… 终于按时完成第二篇。本来准备着手讲一些实践但是数据库部分没有讲到部分实践会存在一些问题于是就有了此篇以及后续——数据库容器化。本篇将从SQL Server容器化实践开始并逐步讲解其他数据库的容器化实践中间再穿插一些知识点和实践细节。在编写的过程中我一直处于一种矛盾的心理是一笔带过呢还是尽可能的将实践细节全部讲到位呢最后我选择了后者虽然要花费更多的精力但是既然开始了本次教程就尽量写到位吧。目录//数据库容器化//什么是数据库数据库简而言之可视为电子化的文件柜——存储电子文件的处所用户可以对文件中的数据运行新增、截取、更新、删除等操作。因此所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。目前主流的数据库分为关系型数据库和非关系型数据库NoSQL。关系型数据库和非关系型数据库对比主流的数据库关系型数据库· Microsoft SQL ServerMicrosoft· MySQL开源· Oracle甲骨文· MariaDB(MySQL的代替品)· PostgreSQL开源· DB2IBM非关系型数据库· MongoDB面向文档· CouchDB面向文档Apache基金会· Redis键值对数据库· MemcacheDB键值对数据库· Hypertable· Hadoop HBase数据库容器化随着Docker的流行主流的数据库厂商均提供了相关的Docker镜像因此我们能够非常方便的将数据库托管到容器之中用于测试和开发环境现阶段。注意现阶段我们不推荐在容器中托管正式环境的数据库目前数据库容器化还存在一些问题、不适应性以及质疑并且还缺乏成熟的案例和方案已经有很多厂商在做这块的探索了包括阿里、京东。数据库容器化绝不是一个伪命题数据库容器化是值得我们来探索的一个方向而且应是一种必然的趋势。在本篇中我们不做过多探讨。 接下来笔者将逐步和大家分享如何将主流的数据库托管到容器之中。//Sql Server容器化//SQL Server是由Microsoft开发和推广的关系数据库其在操作数据库管理系统 (ODBMS) 领域处于领先水平目前已经提供SQL Server 2019预览版。其中SQL Server 2017 跨出了重要的一步它力求通过将 SQL Server 的强大功能引入 Linux、基于 Linux 的 Docker 容器和 Windows使用户可以在 SQL Server 平台上选择开发语言、数据类型、本地开发或云端开发以及操作系统开发。因此在本篇教程中我们将使用SQL Server 2017来进行演示。镜像说明官方镜像分为Windows版本和Linux版本官方镜像说明页为https://hub.docker.com/r/microsoft/mssql-server这里我们主要介绍Linux版本的镜像。环境要求· Docker Engine 1.8。· Docker overlay2存储驱动程序。· 至少2 GB的磁盘空间。· 至少2 GB 的 RAM。如果您在Docker for Mac或Windows上运行请确保为Docker VM分配足够的内存。· Linux 上的 SQL Server 的系统要求。环境变量必填项· ACCEPT_EULA Y表示接受最终用户许可协议否则无法启动· SA_PASSWORD 强密码 密码必须符合复杂密码要求包含大小写字母以及数字或特殊符号长度不能少于8个字符否则无法启动注意项· MSSQL_PID your_product_id | edition_name用于设置产品IDPID或版本默认值Developer值范围支持Developer、Express、Standard 、Enterprise、EnterpriseCore、产品密钥 一般情况下我们使用Developer即可即开发版本其包含企业版所有的功能足够我们用于开发和测试。其他//运行 SQL Server 容器镜像//PowerShell运行在Windows系统之上我们可以使用PowerShell来运行SQL Server镜像。脚本如下所示docker run -e ACCEPT_EULAY -e SA_PASSWORD123456abcD -p 1433:1433 --name mySqlServer -d mcr.microsoft.com/mssql/server:2017-latest相关参数说明如下所示参数描述-e “ACCEPT_EULAY”将 ACCEPT_EULA 变量设置为任意值以确认接受最终用户许可协议。 SQL Server 映像的必需设置。-e “SA_PASSWORD 123456abcD”指定至少包含 8 个字符且符合 SQL Server 密码要求的强密码。 SQL Server 映像的必需设置。-p 1433:1433建立主机环境第一个值上的 TCP 端口与容器第二个值中 TCP 端口的映射。 在此示例中SQL Server 侦听容器中的 TCP 1433 并公开的端口 1433在主机上。--name sql1为容器指定一个自定义名称而不是使用随机生成的名称。 如果运行多个容器则无法重复使用相同的名称。mcr.microsoft.com/mssql/server:2017-latestSQL Server 2017 Linux 容器映像。 注意密码应符合 SQL Server 默认密码策略否则容器无法设置 SQL Server将停止工作。 默认情况下密码必须至少为 8 个字符长且包含三个以下四种字符集的字符大写字母、 小写字母、 十进制数字和符号。 你可以通过执行 docker logs 命令检查错误日志。执行之后镜像不存在会自动拉取大家也可以使用拉取命令下拉取镜像比如docker pull mcr.microsoft.com/mssql/server:2017-latest会默认创建一个使用 SQL Server 2017 开发人员版的容器端口为1433密码为123456abcD。 镜像拉取完成之后成功启动 当然大家也可以通过命令行查看docker ps -a 如果“状态(STATUS)”列显示“UP”则 SQL Server 将在容器中运行并侦听“端口”列中指定的端口。Bash Shell运行如果是Linux系统我们可以通过Bash Shell执行以下命令sudo docker run -e ACCEPT_EULAY -e SA_PASSWORD123456abcD \ -p 1433:1433 --name mySqlServer \ -d mcr.microsoft.com/mssql/server:2017-latest //管理SQL Server//使用SQL Server Management Studio来管理SQL ServerSQL Server Management Studio (SSMS)是 Microsoft 免费提供为开发和管理需求的 SQL 工具套件的一部分。 SSMS 是一个集成的环境若要访问、 配置、 管理、 管理和开发 SQL Server 的所有组件。 它可以连接到任何平台上运行这两个在本地在 Docker 容器中和云中的 SQL Server。 它还连接到 Azure SQL 数据库和 Azure SQL 数据仓库。 SSMS 将大量图形工具与丰富的脚本编辑器相结合各种技术水平的开发人员和管理员都能访问 SQL Server。SSMS 提供适用于 SQL Server 的大量开发和管理功能包括执行以下任务的工具· 配置、 监视和管理单个或多个 SQL Server 实例· 部署、 监视和升级数据层组件如数据库和数据仓库· 备份和还原数据库· 生成和执行 T-SQL 查询和脚本并查看结果· 生成数据库对象的 T-SQL 脚本· 查看和编辑数据库中的数据· 以可视方式设计 T-SQL 查询和数据库对象如视图、 表和存储的过程下载地址https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?viewsql-server-2017安装完成之后我们就可以启动SSMS来进行管理我们的数据库了。 设置描述服务器类型默认为数据库引擎请勿更改此值。服务器名称输入目标计算机的名称或IP 地址。身份验证对于 Linux 上的 SQL Server请使用SQL Server 身份验证。登录输入数据库服务器上具有访问权限的用户的名称 (例如默认值SA安装过程中创建的帐户)。密码指定的用户输入的密码 (对于SA帐户则此安装过程中创建)。如图所示我们输入上述内容以及刚才我们通过环境变量设置的密码“123456abcD”点击连接可以看到如下图所示的界面 我们可以通过界面来管理我们的数据库以及执行相关的查询 使用sqlcmd管理数据库我们可以在容器内部使用 SQL Server 命令行工具 sqlcmd 来连接和管理SQL Server。1. 使用 docker exec -it 命令在运行的容器内部启动交互式 Bash ShellPowerShelldocker exec -it mySqlServer bash bashsudo docker exec -it mySqlServer bash2. 使用 sqlcmd 进行本地连接。 默认情况下sqlcmd 不在路径之中因此需要指定完整路径。命令/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 123456abcD 成功的话就会显示 sqlcmd 命令提示符 1 。3. 执行SQL脚本。比如我们创建一个MyDb数据库可以执行以下脚本CREATE DATABASE MyDBSELECT Name from sys.DatabasesGO第一行为创库脚本第二行执行查询查询服务器上所有数据库的名称第三行为执行。注意只有输入GO才会立即执行之前的命令。 执行结果如上图所示。我们通过SSMS可以查看到我们刚才创建的数据库 除了以上方式我们也可以在容器外使用sqlcmd连接数据库sqlcmd -S localhost,1433 -U SA -P 123456abcD 注意退出SQLCMD命令为QUIT。其他管理工具除了以上的连接管理工具大家还可以使用以下工具进行连接· Visual Studio Code · Azure Data Studio跨平台数据库工具适用于在WindowsMacOS和Linux上使用Microsoft系列内部部署和云数据平台的数据专业人员 · mssql-cliSQL Server的新的交互式命令行查询工具支持跨平台开源提供智能提示和语法高亮等https://cloudblogs.microsoft.com/sqlserver/2017/12/12/try-mssql-cli-a-new-interactive-command-line-tool-for-sql-server/Docker最全教程——从理论到实战一Docker最全教程——从理论到实战二Docker最全教程——从理论到实战三Docker最全教程——从理论到实战四Docker最全教程——从理论到实战五Docker最全教程——从理论到实战六Docker最全教程——从理论到实战七Docker最全教程——从理论到实战(八) Docker最全教程——从理论到实战九Docker最全教程之使用Tencentnbsp;Hub来完成CI十