孤败 發表於 2019-1-14 10:04:00

Docker最全教程——数据库容器化(十)

<p>终于按时完成第二篇。本来准备着手讲一些实践,但是数据库部分没有讲到,部分实践会存在一些问题,于是就有了此篇以及后续——数据库容器化。本篇将从SQL Server容器化实践开始,并逐步讲解其他数据库的容器化实践,中间再穿插一些知识点和实践细节。在编写的过程中,我一直处于一种矛盾的心理,是一笔带过呢?还是尽可能的将实践细节全部讲到位呢?最后,我选择了后者,虽然要花费更多的精力,但是既然开始了本次教程,就尽量写到位吧。</p>
<p>&nbsp;</p>
<h2><strong data-brushtype="text">目录</strong></h2>
<p><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114094616209-1317608641.png" alt=""></p>
<p>&nbsp;</p>
<h2><strong>数据库容器化</strong></h2>
<h3>什么是数据库?</h3>
<p>数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。因此,所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。</p>
<p>目前主流的数据库分为关系型数据库和非关系型数据库(NoSQL)。</p>
<p>&nbsp;</p>
<h3>关系型数据库和非关系型数据库对比</h3>
<p><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114094703762-1276893797.png" alt=""></p>
<h2>主流的数据库</h2>
<h3><strong>关系型数据库:</strong></h3>
<p>·&nbsp;Microsoft SQL Server(Microsoft)</p>
<p>·&nbsp;MySQL(开源)</p>
<p>·&nbsp;Oracle(甲骨文)</p>
<p>·&nbsp;MariaDB(MySQL的代替品)</p>
<p>·&nbsp;PostgreSQL(开源)</p>
<p>·&nbsp;DB2(IBM)</p>
<p>&nbsp;</p>
<h3><strong>非关系型数据库:</strong></h3>
<p>·&nbsp;MongoDB(面向文档)</p>
<p>·&nbsp;CouchDB(面向文档,Apache基金会)</p>
<p>·&nbsp;Redis(键值对数据库)</p>
<p>·&nbsp;MemcacheDB(键值对数据库)</p>
<p>·&nbsp;Hypertable</p>
<p>·&nbsp;Hadoop HBase</p>
<p>&nbsp;</p>
<h2>数据库容器化</h2>
<p>随着Docker的流行,主流的数据库厂商均提供了相关的Docker镜像,因此我们能够非常方便的将数据库托管到容器之中,<strong>用于测试和开发环境(现阶段)</strong>。</p>
<p><strong>注意,现阶段我们不推荐在容器中托管正式环境的数据库,目前数据库容器化还存在一些问题、不适应性以及质疑,并且还缺乏成熟的案例和方案(已经有很多厂商在做这块的探索了,包括阿里、京东)。</strong></p>
<p><strong>数据库容器化绝不是一个伪命题,数据库容器化是值得我们来探索的一个方向,而且应是一种必然的趋势。在本篇中,我们不做过多探讨。</strong></p>
<p><strong><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114094830473-670270432.jpg" alt=""></strong></p>
<p>接下来,笔者将逐步和大家分享如何将主流的数据库托管到容器之中。</p>
<p>&nbsp;</p>
<h2><strong>Sql&nbsp;Server容器化</strong></h2>
<p>SQL Server是由Microsoft开发和推广的关系数据库,其在操作数据库管理系统&nbsp;(ODBMS) 领域处于领先水平,目前已经提供SQL&nbsp;Server&nbsp;2019预览版。其中,SQL Server 2017 跨出了重要的一步,它力求通过将 SQL Server 的强大功能引入 Linux、基于 Linux 的 Docker 容器和 Windows,使用户可以在 SQL Server 平台上选择开发语言、数据类型、本地开发或云端开发,以及操作系统开发。</p>
<p>因此,在本篇教程中,我们将使用SQL&nbsp;Server&nbsp;2017来进行演示。</p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114094917000-668176853.jpg" alt=""></p>
<p>&nbsp;</p>
<h3>镜像说明</h3>
<p>官方镜像分为Windows版本和Linux版本,官方镜像说明页为:</p>
<p>https://hub.docker.com/r/microsoft/mssql-server</p>
<p>这里我们主要介绍Linux版本的镜像。</p>
<h3>环境要求</h3>
<p>·&nbsp;Docker Engine 1.8+。</p>
<p>·&nbsp;Docker&nbsp;<strong>overlay2</strong>存储驱动程序。</p>
<p>·&nbsp;至少2 GB的磁盘空间。</p>
<p>·&nbsp;至少2 GB 的 RAM。如果您在Docker for Mac或Windows上运行,请确保为Docker VM分配足够的内存。</p>
<p>·&nbsp;Linux&nbsp;上的&nbsp;SQL Server&nbsp;的系统要求。</p>
<p>&nbsp;</p>
<h3>环境变量</h3>
<p>必填项:</p>
<p>·&nbsp;ACCEPT_EULA = Y(表示接受最终用户许可协议,否则无法启动)</p>
<p>·&nbsp;SA_PASSWORD = &lt;强密码&gt; (密码必须符合复杂密码要求,包含大小写字母以及数字或特殊符号,长度不能少于8个字符,否则无法启动)</p>
<p>&nbsp;</p>
<p>注意项:</p>
<p>·&nbsp;MSSQL_PID = &lt;your_product_id | edition_name&gt;(用于设置产品ID(PID)或版本,默认值:Developer)</p>
<p>值范围支持Developer、Express、Standard&nbsp;、Enterprise、EnterpriseCore、产品密钥&nbsp;,一般情况下,我们使用Developer即可,即开发版本,其包含企业版所有的功能,足够我们用于开发和测试。</p>
<p>其他:</p>
<p><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-copyright="0" data-ratio="0.6732851985559567" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zicOAboYSGm5eZsciaoUDEBNA2Ps5eqtQ05TELvE7KZqlKMq5Cqbftd4BQ/640?wx_fmt=jpeg" data-type="jpeg" data-w="554"></p>
<p><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095024044-138258867.jpg" alt="">&nbsp;</p>
<h2>&nbsp;</h2>
<h2><strong>运行 SQL Server 容器镜像</strong></h2>
<h3>PowerShell运行</h3>
<p>在Windows系统之上,我们可以使用PowerShell来运行SQL&nbsp;Server镜像。脚本如下所示:</p>
<p>&nbsp;</p>
<p>docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=123456abcD" `</p>
<p>&nbsp;&nbsp;&nbsp;-p 1433:1433 --name&nbsp;mySqlServer `</p>
<p>&nbsp;&nbsp;&nbsp;-d mcr.microsoft.com/mssql/server:2017-latest</p>
<p>&nbsp;</p>
<p>相关参数说明如下所示:</p>
<table style="width: 553px" cellspacing="0">
<tbody>
<tr>
<td valign="top" width="267">
<p style="text-align: left"><strong>参数</strong></p>
</td>
<td valign="top" width="286">
<p><strong>描述</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="267">
<p><strong>-e “ACCEPT_EULA=Y”</strong></p>
</td>
<td valign="top" width="286">
<p>将&nbsp;<strong>ACCEPT_EULA</strong>&nbsp;变量设置为任意值,以确认接受最终用户许可协议。&nbsp;SQL Server 映像的必需设置。</p>
</td>
</tr>
<tr>
<td valign="top" width="267">
<p><strong>-e “SA_PASSWORD =123456abcD”</strong></p>
</td>
<td valign="top" width="286">
<p>指定至少包含 8 个字符且符合&nbsp;SQL Server&nbsp;密码要求的强密码。&nbsp;SQL Server 映像的必需设置。</p>
</td>
</tr>
<tr>
<td valign="top" width="267">
<p><strong>-p 1433:1433</strong></p>
</td>
<td valign="top" width="286">
<p>建立主机环境(第一个值)上的 TCP 端口与容器(第二个值)中 TCP 端口的映射。&nbsp;在此示例中,SQL Server 侦听容器中的 TCP 1433 并公开的端口 1433,在主机上。</p>
</td>
</tr>
<tr>
<td valign="top" width="267">
<p><strong>--name sql1</strong></p>
</td>
<td valign="top" width="286">
<p>为容器指定一个自定义名称,而不是使用随机生成的名称。&nbsp;如果运行多个容器,则无法重复使用相同的名称。</p>
</td>
</tr>
<tr>
<td valign="top" width="267">
<p><strong>mcr.microsoft.com/mssql/server:2017-latest</strong></p>
</td>
<td valign="top" width="286">
<p>SQL Server 2017 Linux 容器映像。</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left">&nbsp;</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095101633-20334820.jpg" alt=""></p>
<p style="text-align: left"><span style="background-color: rgba(255, 255, 255, 1); color: rgba(51, 102, 255, 1)"><em>注意:密码应符合</em><em>&nbsp;SQL Server 默认密码策略,否则容器无法设置 SQL Server,将停止工作。 默认情况下,密码必须至少为 8 个字符长,且包含三个以下四种字符集的字符:大写字母、 小写字母、 十进制数字和符号。 你可以通过执行 docker logs 命令检查错误日志。</em></span></p>
<p style="text-align: left"><span style="color: rgba(51, 102, 255, 1)">&nbsp;</span></p>
<p style="text-align: left">执行之后(镜像不存在会自动拉取,大家也可以使用拉取命令下拉取镜像,比如:docker pull mcr.microsoft.com/mssql/server:2017-latest),会默认创建一个使用&nbsp;SQL Server 2017 开发人员版的容器,端口为1433,密码为123456abcD。</p>
<p style="text-align: left"><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.5054151624548736" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zicMwjAFsX1pD8bIBsIZQr4TaQ8zfRiaaraDI4nuGmfVHVd4RHz3iaJMtzg/640?wx_fmt=jpeg" data-type="jpeg" data-w="554">&nbsp;<img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095308339-1633577642.jpg" alt=""></p>
<h3 style="text-align: left">镜像拉取完成之后成功启动:</h3>
<p style="text-align: left"><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.6299638989169675" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zicJJFsWCqSRBvKxGmUAj4FKR34zqpo4ne1XiaowyicZibgdQ0gEDAicQXQHQ/640?wx_fmt=jpeg" data-type="jpeg" data-w="554">&nbsp;<img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095318985-1280515954.jpg" alt=""></p>
<p style="text-align: left">当然,大家也可以通过命令行查看:</p>
<p style="text-align: left">docker ps -a</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095338152-1826680431.jpg" alt=""></p>
<p style="text-align: left">如果“状态(STATUS)”列显示“UP”,则&nbsp;SQL Server 将在容器中运行,并侦听“端口”列中指定的端口。</p>
<p style="text-align: left">&nbsp;</p>
<h3 style="text-align: left">Bash Shell运行</h3>
<p style="text-align: left">如果是Linux系统,我们可以通过Bash Shell执行以下命令:</p>
<p style="text-align: left">sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=123456abcD' \</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp;-p 1433:1433 --name&nbsp;mySqlServer \</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp;-d mcr.microsoft.com/mssql/server:2017-latest</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095401064-1236202758.jpg" alt=""></p>
<p style="text-align: left">&nbsp;</p>
<h2 style="text-align: left"><strong>管理SQL&nbsp;Server</strong></h2>
<h3 style="text-align: left">使用SQL Server Management Studio来管理SQL&nbsp;Server</h3>
<p style="text-align: left">SQL Server Management Studio (SSMS)是 Microsoft&nbsp;<strong>免费</strong>提供为开发和管理需求的&nbsp;SQL 工具套件的一部分。 SSMS 是一个集成的环境,若要访问、 配置、 管理、 管理和开发 SQL Server 的所有组件。 它可以连接到任何平台上运行这两个在本地,在 Docker 容器中和云中的 SQL Server。 它还连接到 Azure SQL 数据库和 Azure SQL 数据仓库。 SSMS 将大量图形工具与丰富的脚本编辑器相结合,各种技术水平的开发人员和管理员都能访问&nbsp;SQL Server。</p>
<p style="text-align: left">SSMS 提供适用于 SQL Server 的大量开发和管理功能,包括执行以下任务的工具:</p>
<p style="text-align: left">·&nbsp;配置、&nbsp;监视和管理单个或多个&nbsp;SQL Server 实例</p>
<p style="text-align: left">·&nbsp;部署、&nbsp;监视和升级数据层组件,如数据库和数据仓库</p>
<p style="text-align: left">·&nbsp;备份和还原数据库</p>
<p style="text-align: left">·&nbsp;生成和执行&nbsp;T-SQL 查询和脚本,并查看结果</p>
<p style="text-align: left">·&nbsp;生成数据库对象的&nbsp;T-SQL 脚本</p>
<p style="text-align: left">·&nbsp;查看和编辑数据库中的数据</p>
<p style="text-align: left">·&nbsp;以可视方式设计&nbsp;T-SQL 查询和数据库对象,如视图、 表和存储的过程</p>
<p style="text-align: left">&nbsp;</p>
<p style="text-align: left">下载地址:</p>
<p style="text-align: left">https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017</p>
<p style="text-align: left">安装完成之后,我们就可以启动SSMS来进行管理我们的数据库了。</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095445375-708157059.png" alt=""></p>
<p style="text-align: left"><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.6142557651991615" data-src="https://mmbiz.qpic.cn/mmbiz_png/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zicf8H6Y9EHutia7Mdc0MZfMknEKhfiaEf2R1ulATcbfLjPvwh2CXolDZ8w/640?wx_fmt=png" data-type="png" data-w="477">&nbsp;</p>
<table style="width: 553px" cellspacing="0">
<tbody>
<tr>
<td valign="top" width="104">
<p><strong>设置</strong></p>
</td>
<td valign="top" width="449">
<p><strong>描述</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p><strong>服务器类型</strong></p>
</td>
<td valign="top" width="449">
<p>默认为数据库引擎;请勿更改此值。</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p><strong>服务器名称</strong></p>
</td>
<td valign="top" width="449">
<p>输入目标计算机的名称或IP&nbsp;地址。</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p><strong>身份验证</strong></p>
</td>
<td valign="top" width="449">
<p>对于 Linux&nbsp;上的&nbsp;SQL Server,请使用<strong>SQL Server&nbsp;身份验证</strong>。</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p><strong>登录</strong></p>
</td>
<td valign="top" width="449">
<p>输入数据库服务器上具有访问权限的用户的名称 (例如,默认值<strong>SA</strong>安装过程中创建的帐户)。</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p><strong>密码</strong></p>
</td>
<td valign="top" width="449">
<p>指定的用户输入的密码 (对于<strong>SA</strong>帐户,则此安装过程中创建)。</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: left">&nbsp;</p>
<p style="text-align: left">如图所示,我们输入上述内容,以及刚才我们通过环境变量设置的密码“123456abcD”,点击连接,可以看到如下图所示的界面:</p>
<p style="text-align: left"><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.5842490842490843" data-src="https://mmbiz.qpic.cn/mmbiz_png/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zicgCo4DlBMwNhkrVYtrDTVo3YzEuKALXEMeQzhzSpFXMWFUmxK8KNFAw/640?wx_fmt=png" data-type="png" data-w="546">&nbsp;<img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095502530-1634465792.png" alt=""></p>
<p style="text-align: left">我们可以通过界面来管理我们的数据库以及执行相关的查询:</p>
<p style="text-align: left"><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.5894538606403014" data-src="https://mmbiz.qpic.cn/mmbiz_png/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zicp8RymnILD1CHnYrcqw1icmc3DqV3qze9CMQVJtvzIdruDHBAukt3egQ/640?wx_fmt=png" data-type="png" data-w="531">&nbsp;<img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095519159-1147173895.png" alt=""></p>
<p style="text-align: left">&nbsp;</p>
<h2 style="text-align: left">使用sqlcmd管理数据库</h2>
<p style="text-align: left">我们可以在容器内部使用&nbsp;SQL Server 命令行工具 sqlcmd 来连接和管理SQL Server。</p>
<p style="text-align: left">1.&nbsp;使用&nbsp;docker exec -it 命令在运行的容器内部启动交互式 Bash Shell</p>
<p style="text-align: left">PowerShell:</p>
<p style="text-align: left">docker exec -it mySqlServer "bash"</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095603777-96204464.jpg" alt="">&nbsp;</p>
<p style="text-align: left">bash:</p>
<p style="text-align: left">sudo docker exec -it mySqlServer "bash"</p>
<p style="text-align: left">&nbsp;</p>
<p style="text-align: left">2.&nbsp;使用&nbsp;sqlcmd 进行本地连接。 默认情况下,sqlcmd 不在路径之中,因此需要指定完整路径。</p>
<p style="text-align: left">&nbsp;</p>
<p style="text-align: left">命令:</p>
<p style="text-align: left">/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '123456abcD'</p>
<p style="text-align: left">&nbsp;<img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095629557-868146902.jpg" alt=""></p>
<p style="text-align: left">成功的话,就会显示&nbsp;sqlcmd 命令提示符&nbsp;1&gt;&nbsp;。</p>
<p style="text-align: left">&nbsp;</p>
<p style="text-align: left">3.&nbsp;执行SQL脚本。</p>
<p style="text-align: left">比如,我们创建一个MyDb数据库,可以执行以下脚本:</p>
<p style="text-align: left">CREATE DATABASE MyDB</p>
<p style="text-align: left">SELECT Name from sys.Databases</p>
<p style="text-align: left">GO&nbsp;</p>
<p style="text-align: left">第一行为创库脚本,第二行执行查询,查询服务器上所有数据库的名称,第三行为执行。</p>
<p style="text-align: left"><span style="color: rgba(51, 102, 255, 1)"><em>注意:只有输入GO才会立即执行之前的命令。</em></span></p>
<p style="text-align: left">&nbsp;</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095700072-1608403727.jpg" alt=""></p>
<p style="text-align: left">执行结果如上图所示。我们通过SSMS可以查看到我们刚才创建的数据库:</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095713390-185042186.png" alt=""><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="1.117936117936118" data-src="https://mmbiz.qpic.cn/mmbiz_png/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zic3Pvpq9PpnictGd265k3WhIgTrZkR0eyLq4tfrQibSP5Zy5BSlxk1J82A/640?wx_fmt=png" data-type="png" data-w="407">&nbsp;</p>
<p style="text-align: left">除了以上方式,我们也可以在容器外使用sqlcmd连接数据库:</p>
<p style="text-align: left">sqlcmd -S localhost,1433 -U SA -P "123456abcD"</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095733858-1933920475.jpg" alt=""><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.44404332129963897" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0ziceuwmTIj9D55C2lib3RtJqQZpHCrCZ61Y5tX3AfnicjhEmafvQHfEnNtw/640?wx_fmt=jpeg" data-type="jpeg" data-w="554">&nbsp;</p>
<p style="text-align: left"><span style="color: rgba(51, 102, 255, 1)"><em>注意:退出SQLCMD命令为:</em><em>QUIT</em><em>。</em></span></p>
<p style="text-align: left">&nbsp;</p>
<h2 style="text-align: left">其他管理工具</h2>
<p style="text-align: left">除了以上的连接管理工具,大家还可以使用以下工具进行连接:</p>
<p style="text-align: left">·&nbsp;Visual Studio Code</p>
<p style="text-align: left"><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.7490974729241877" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0zicjWusdsrIjuEtm2GcIrkNk1zqd0Lw6SsD0PUHph650nqxBgXib0Y05WA/640?wx_fmt=jpeg" data-type="jpeg" data-w="554">&nbsp;<img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095758638-2066824749.jpg" alt=""></p>
<p style="text-align: left">·&nbsp;Azure Data Studio(跨平台数据库工具,适用于在Windows,MacOS和Linux上使用Microsoft系列内部部署和云数据平台的数据专业人员)</p>
<p style="text-align: left"><img class="img_loading" src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" alt="" data-ratio="0.7870036101083032" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/Mt5QjqkFG0pSialqpatuq3QYmDQFibI0ziclha0X0dQW2zsZN5e5S5DNI60Nzgm0iaf6R6cbfPSczCF7TefQniauOFA/640?wx_fmt=jpeg" data-type="jpeg" data-w="554">&nbsp;<img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095828888-573039968.jpg" alt=""></p>
<p style="text-align: left">·&nbsp;mssql-cli(SQL Server的新的交互式命令行查询工具,支持跨平台,开源,提供智能提示和语法高亮等)</p>
<p style="text-align: left">https://cloudblogs.microsoft.com/sqlserver/2017/12/12/try-mssql-cli-a-new-interactive-command-line-tool-for-sql-server/</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/70544/201901/70544-20190114095858544-1707104381.gif" alt="">&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    作者:雪雁<br>出处:http://www.cnblogs.com/codelove/
<br>如果喜欢作者的文章,请关注【CodeSpirit-码灵】公众号以便第一时间获得最新内容。本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。<br><b>静听鸟语花香,漫赏云卷云舒。</b>
<br>
<img src="https://images.cnblogs.com/cnblogs_com/codelove/315887/o_251224070213_%E5%85%AC%E4%BC%97%E5%8F%B7.jpg" width="100" height="100"><br><br>
来源:https://www.cnblogs.com/codelove/p/10265400.html
頁: [1]
查看完整版本: Docker最全教程——数据库容器化(十)