Docker最全教程

目前每一日都在悠闲时间努力编写Apworks框架的案例代码WeText。在文书发布和管理微服务中,作者准备采用微软的SQL
Server for Linux来做示范,于是也就在投机的docker-compose中参预了MS SQL
Server的服务。其实在Docker中运营SQL
Server是非凡轻松的,今日天津大学学约做个介绍吧。

近年天天都在空闲时间努力编写Apworks框架的案例代码WeText。在文件揭橥和拍卖微服务中,小编筹算选拔微软的SQL
Server for Linux来做示范,于是也就在温馨的docker-compose中进入了MS SQL
Server的劳务。其实在Docker中运作SQL
Server是万分轻巧的,今日光景做个介绍吧。

前不久天天都在闲暇时间努力编写Apworks框架的案例代码WeText。在文件公布和管理微服务中,作者企图选拔微软的SQL
Server for Linux来做示范,于是也就在协和的docker-compose中投入了MS SQL
Server的劳动。其实在Docker中运作SQL
Server是非凡轻巧的,后日天津大学学致做个介绍吧。

终于定时达成第3篇。本来计划下手讲一些推行,可是数据库部分未有讲到,部分进行会存在部分主题材料,于是就有了此篇以及后续——数据水库蓄水体积器化。本篇将从SQL
Server容器化实行早先,并逐年讲授别的数据库的容器化实行,中间再穿插一些知识点和实践细节。在编写制定的进度中,我一向处在1种争辩的思维,是一笔带过呢?依然尽量的将实施细节全体讲到位呢?最终,作者选拔了后世,纵然要费用更加多的生机,然则既然开首了此番教程,就硬着头皮写到位吧。

启动Microsoft SQL Server 2017容器

上边是自身目前WeText案例中用来搭建基础结构服务的docker-compose.yml文件(该文件今后还会转移,最新版本请参阅Github):

version: "3"
services:
    mongodb:
        image: mongo
        volumes:
            - ${MONGODB_DATABASE_VOLUME}
        container_name: mongodb
        ports:
            - "27017:27017"
    rabbit:
        image: rabbitmq:3-management
        ports:
            - "5672:5672"
            - "4369:4369"
            - "5671:5671"
            - "25672:25672"
            - "15672:15672"
        container_name: rabbitmq
        hostname: my-rabbitmq
        volumes:
            - ${RABBITMQ_DATA_VOLUME}
    postgres:
        image: postgres
        ports:
            - "5432:5432"
        container_name: postgres
        volumes:
            - ${POSTGRESQL_DATA_VOLUME}

    mssql:
        image: microsoft/mssql-server-linux:2017-latest
        ports:
            - "1433:1433"
        container_name: mssql
        environment:
            - ACCEPT_EULA=Y
            - SA_PASSWORD=G1veMeP@ss

那么些docker-compose文件中包涵了八个劳务的概念,明日我们只关怀最后三个,也正是mssql。能够看看:

  1. Microsoft SQL
    Server的Docker镜像名字为:microsoft/mssql-server-linux,tag为2017-latest
  2. SQL Server在容器内侦听143三端口,也便是行业内部的SQL Server端口
  3. 启航SQL
    Server容器必要三个情况变量:ACCEPT_EULA=Y,表示接受最后用户许可协议;SA_PASSWORD=G1veMeP@ss,表示设置sa用户的密码。那个用户密码要吻合强密码标准(数字、字母、大小写,至少七个字符),之后在客户端连接的时候,就须要利用这么些密码登六服务器

理所当然,你可以不使用docker-compose,而是直接使用docker
run,那么方法也是近似的,比如能够应用上面包车型大巴言辞:

sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=G1veMeP@ss' \
   -p 1433:1433 --name mssql \
   -d microsoft/mssql-server-linux:2017-latest

无差距于也得以运维SQL Server容器。在Docker中运作SQL Server时,要求留意:

  1. 主机(host machine)的内部存款和储蓄器至少须求三.伍GB左右
  2. Docker中的SQL Server是开辟者版本(Developer
    艾德ition),作用与合营社版同样,不过仅能用来开荒照旧测试碰到,不得用于生产境况

启动Microsoft SQL Server 2017容器

上边是自家当下WeText案例中用来搭建基础结构服务的docker-compose.yml文件(该文件现在还会更动,最新版本请参阅Github):

version: "3"
services:
    mongodb:
        image: mongo
        volumes:
            - ${MONGODB_DATABASE_VOLUME}
        container_name: mongodb
        ports:
            - "27017:27017"
    rabbit:
        image: rabbitmq:3-management
        ports:
            - "5672:5672"
            - "4369:4369"
            - "5671:5671"
            - "25672:25672"
            - "15672:15672"
        container_name: rabbitmq
        hostname: my-rabbitmq
        volumes:
            - ${RABBITMQ_DATA_VOLUME}
    postgres:
        image: postgres
        ports:
            - "5432:5432"
        container_name: postgres
        volumes:
            - ${POSTGRESQL_DATA_VOLUME}

    mssql:
        image: microsoft/mssql-server-linux:2017-latest
        ports:
            - "1433:1433"
        container_name: mssql
        environment:
            - ACCEPT_EULA=Y
            - SA_PASSWORD=G1veMeP@ss

这几个docker-compose文件中包罗了七个劳务的概念,明天大家只关心最后一个,也便是mssql。能够看来:

  1. Microsoft SQL
    Server的Docker镜像名字为:microsoft/mssql-server-linux,tag为2017-latest
  2. SQL Server在容器内侦听143三端口,也便是正经的SQL Server端口
  3. Docker最全教程。起先SQL
    Server容器需求三个景况变量:ACCEPT_EULA=Y,表示接受最后用户许可协议;SA_PASSWORD=G1veMeP@ss,表示设置sa用户的密码。那几个用户密码要吻合强密码标准(数字、字母、大小写,至少九个字符),之后在客户端连接的时候,就须要利用这些密码登陆服务器

理所当然,你可以不使用docker-compose,而是间接使用docker
run,那么方法也是看似的,比如能够利用上面的言语:

sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=G1veMeP@ss' \
   -p 1433:1433 --name mssql \
   -d microsoft/mssql-server-linux:2017-latest

同样也得以运行SQL Server容器。在Docker中运作SQL Server时,须求小心:

  1. 主机(host machine)的内部存款和储蓄器至少须求三.伍GB左右
  2. Docker中的SQL Server是开拓者版本(Developer
    艾德ition),作用与信用合作社版同样,可是仅能用来开采照旧测试景况,不得用于生产情形

启动Microsoft SQL Server 2017容器

997755.com澳门葡京 1

连接SQL Server 2017

法定文书档案介绍使用docker exec命令,在已运行的SQL Server
20一七器皿中,实践sqlcmd命令进行接二连三和数据库使用。当然,也能够动用图形化的客户端,举个例子SQL
Server Management Studio大概Visual Studio的Server
Explorer来连接运营于Docker中的SQL Server 20壹七,方法与连接普通版本SQL
Server的法子同样。比如,上面是在Visual Studio的Server
Explorer中接二连三Microsoft SQL Server on Linux for Docker的功能:

997755.com澳门葡京 2

连接SQL Server 2017

法定文档介绍使用docker exec命令,在已运营的SQL Server
20一7器皿中,实施sqlcmd命令进行延续和数据库使用。当然,也得以利用图形化的客户端,比方SQL
Server Management Studio或许Visual Studio的Server
Explorer来连接运转于Docker中的SQL Server 20一7,方法与连接普通版本SQL
Server的办法同样。比方,上边是在Visual Studio的Server
Explorer中总是Microsoft SQL Server on Linux for Docker的意义:

997755.com澳门葡京 3

上面是自身目前WeText案例中用于搭建基础结构服务的docker-compose.yml文本(该公文未来还会变动,最新版本请参阅Github):

怎么着是数据库?

数据库,简单的说可身为电子化的文件柜——存储电子文件的场子,用户能够对文件中的数据运维新添、截取、更新、删除等操作。由此,所谓“数据库”是以自然措施积存在一同、能与三个用户共享、具备尽可能小的冗余度、与应用程序相互独立的数量集合。

此时此刻主流的数据库分为关系型数据库和非关系型数据库。

参照文书档案

  • Run the SQL Server 2017 container image with
    Docker
  • Docker Repository:
    microsoft/mssql-server-linux

参考文书档案

  • Run the SQL Server 2017 container image with
    Docker
  • Docker Repository:
    microsoft/mssql-server-linux
version: "3"

services:

  mongodb:

    image: mongo

    volumes:

      - ${MONGODB_DATABASE_VOLUME}

    container_name: mongodb

    ports:

      - "27017:27017"

  rabbit:

    image: rabbitmq:3-management

    ports:

      - "5672:5672"

      - "4369:4369"

      - "5671:5671"

      - "25672:25672"

      - "15672:15672"

    container_name: rabbitmq

    hostname: my-rabbitmq

    volumes:

      - ${RABBITMQ_DATA_VOLUME}

  postgres:

    image: postgres

    ports:

      - "5432:5432"

    container_name: postgres

    volumes:

      - ${POSTGRESQL_DATA_VOLUME}



  mssql:

    image: microsoft/mssql-server-linux:2017-latest

    ports:

      - "1433:1433"

    container_name: mssql

    environment:

      - ACCEPT_EULA=Y

      - SA_PASSWORD=G1veMeP@ss 

关系型数据库和非关系型数据库相比较

997755.com澳门葡京 4

其一docker-compose文件中富含了两个服务的概念,后天大家只关心最终3个,也等于mssql。能够观望:

主流的数据库

关系型数据库:

· Microsoft SQL Server(Microsoft)

· MySQL

· Oracle

· 玛丽亚DB(MySQL的代替品)

· PostgreSQL

· DB2

非关系型数据库:

· MongoDB

· CouchDB(面向文档,Apache基金会)

· Redis

· MemcacheDB

· Hypertable

· Hadoop HBase

趁着Docker的流行,主流的数据库厂家均提供了有关的Docker镜像,由此大家能够相当有利的将数据库托管到容器之中,用来测试和支付条件

瞩目,现阶段我们不引入在容器中托管正式境遇的数据库,近日数据水库蓄水体量器化还留存有的难题、不适应性以及困惑,并且还不够成熟的案例和方案(已经有不少厂商在做这块的追究了,包罗Ali、京东)。

数据水库蓄水体积器化绝不是贰个伪命题,数据水库蓄水体量器化是值得我们来索求的三个势头,而且应是1种自然的方向。在本篇中,大家不做过多查究。

997755.com澳门葡京 5

接下去,小编将日趋和大家分享什么将主流的数据库托管到容器之中。

SQL Server是由Microsoft开荒和放大的关周密据库,其在操作数据库管理类别领域处于超过水平,目前早已提供SQL Server 201玖预览版。当中,SQL Server
2017 跨出了第一的一步,它力求通过将 SQL Server 的强硬作用引进Linux、基于 Linux 的 Docker 容器和 Windows,使用户能够在 SQL Server
平台上摘取开采语言、数据类型、本地开荒或云端开拓,以及操作系统开垦。

由此,在本篇教程中,大家将运用SQL Server 20一7来进呈现身说法。

997755.com澳门葡京 6

镜像表明

官方镜像分为Windows版本和Linux版本,官方镜像表达页为:

此间大家重视介绍Linux版本的镜像。

境况供给

· Docker Engine 1.8+。

· Dockeroverlay2存款和储蓄驱动程序。

· 至少二 GB的磁盘空间。

· 至少2 GB 的 RAM。若是你在Docker for Mac或Windows上运转,请确定保证为Docker
VM分配丰裕的内部存款和储蓄器。

· Linux 上的 SQL Server 的系统须求。

碰到变量

必填项:

· ACCEPT_EULA = Y(表示接受最后用户许可协议,不然无法起动)

· SA_PASSWOEnclaveD = <强密码>
(密码必须符合复杂密码需要,包罗大小写字母以及数字或特殊符号,长度不可能轻松玖个字符,不然不可能起动)

注意项:

· MSSQL_PID = <your_product_id |
edition_name>(用于安装产品ID或版本,私下认可值:Developer)

值范围帮助Developer、Express、Standard
、Enterprise、EnterpriseCore、产品密钥
,一般情况下,大家应用Developer就可以,即开采版本,其包罗企业版具备的效益,丰硕大家用来开拓和测试。

其他:

997755.com澳门葡京 7

一.Microsoft SQL
Server的Docker镜像名称叫:microsoft/mssql-server-linux,tag为2017-latest

PowerShell运行

在Windows系统之上,大家得以选择PowerShell来运行SQL
Server镜像。脚本如下所示:

docker run -e “ACCEPT_EULA=Y” -e “SA_PASSWORD=123456abcD” `

-p 1433:1433 –name mySqlServer `

-d mcr.microsoft.com/mssql/server:2017-latest

连带参数表达如下所示:

997755.com澳门葡京 8997755.com澳门葡京 9

注意:密码应符合 SQL Server 暗中同意密码战略,不然容器不能设置 SQL
Server,将终止专业。 私下认可意况下,密码必须至少为 九个字符长,且带有三个以下二种字符集的字符:大写字母、 小写字母、
10进制数字和标志。 你能够经过推行 docker logs 命令检查错误日志。

997755.com澳门葡京 ,施行之后(镜像不存在会自动拉取,大家也足以采用拉取命令下拉取镜像,比方:docker
pull mcr.microsoft.com/mssql/server:2017-latest),会私下认可成立一个选取SQL Server 20一7 开垦职员版的容器,端口为143三,密码为12345陆abcD。

997755.com澳门葡京 10

镜像拉取完毕以后成功运转:

997755.com澳门葡京 11

本来,我们也得以因此命令行查看:

docker ps -a

997755.com澳门葡京 12

借使“状态”列突显“UP”,则 SQL Server
就要容器中运作,并侦听“端口”列中内定的端口。

二.SQL Server在容器内侦听1433端口,也即是正规的SQL Server端口

Bash Shell运行

比如是Linux系统,大家得以透过Bash Shell试行以下命令:

sudo docker run -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=123456abcD’ \

-p 1433:1433 –name mySqlServer \

-d mcr.microsoft.com/mssql/server:2017-latest

997755.com澳门葡京 13

SQL Server Management Studio 是 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 查询和数据库对象,如视图、 表和积累的进度

下载地址:

设置到位今后,大家就能够运维SSMS来实行田间管理大家的数据库了。

997755.com澳门葡京 14997755.com澳门葡京 15

如图所示,大家输入上述内容,以及刚刚大家由此意况变量设置的密码“12345陆abcD”,点击连接,能够见见如下图所示的分界面:

997755.com澳门葡京 16

咱俩得以因此分界面来保管大家的数据库以及实行相关的询问:

997755.com澳门葡京 17

咱俩得以在容器内部选拔 SQL Server 命令行工具 sqlcmd 来连接和保管SQL
Server。

  1. 动用 docker exec -it 命令在运转的容器内部运行交互式 Bash Shell

PowerShell:

docker exec -it mySqlServer “bash”

997755.com澳门葡京 18

bash:

sudo docker exec -it mySqlServer “bash”

  1. 利用 sqlcmd 进行本地连接。 默许景况下,sqlcmd
    不在路线之中,因而供给钦命完整路线。

命令:

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘123456abcD’

997755.com澳门葡京 19

得逞的话,就会议及展览示 sqlcmd 命令提示符 一> 。

  1. 执行SQL脚本。

譬如说,大家成立一个MyDb数据库,能够试行以下脚本:

CREATE DATABASE MyDB

SELECT Name from sys.Databases

GO

率先作为创库脚本,第二行实行查询,查询服务器上装有数据库的称谓,第一表现实施。

留意:只有输入GO才会立刻实行从前的命令。

997755.com澳门葡京 20

实行理并了结果如上海体育场地所示。大家经过SSMS能够查阅到我们刚刚创建的数据库:

997755.com澳门葡京 21

除去上述措施,我们也能够在容器外使用sqlcmd连接数据库:

sqlcmd -S localhost,1433 -U SA -P “123456abcD”

997755.com澳门葡京 22

注意:退出SQLCMD命令为:QUIT。

除此而外以上的连年管理工科具,我们还足以行使以下工具举行连接:

· Visual Studio Code

997755.com澳门葡京 23

· Azure Data
Studio(跨平台数据库工具,适用于在Windows,MacOS和Linux上选用Microsoft体系内部安插和云数据平台的多少标准职员)

997755.com澳门葡京 24

· mssql-cli(SQL
Server的新的交互式命令行查询工具,援助跨平台,开源,提供智能提示和语法高亮等)

997755.com澳门葡京 25

叁.起步SQL
Server容器须要七个情形变量:ACCEPT_EULA=Y,表示接受最后用户许可协议;SA_PASSWO福睿斯D=G一veMeP@ss,表示设置sa用户的密码。这些用户密码要适合强密码标准(数字、字母、大小写,至少几个字符),之后在客户端连接的时候,就须求使用那些密码登六服务器

当然,你能够不选拔docker-compose,而是平昔动用docker
run,那么方法也是看似的,比方能够利用下边包车型客车言语:

sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=G1veMeP@ss' \

  -p 1433:1433 --name mssql \

  -d microsoft/mssql-server-linux:2017-latest 

同壹也得以运维SQL Server容器。在Docker中运转SQL Server时,需求专注:

一.主机(host machine)的内部存储器至少要求三.5GB左右

二.Docker中的SQL Server是开辟者版本(Developer
艾德ition),作用与信用合作社版同样,但是仅能用于支付仍然测试意况,不得用于生产条件

连接SQL Server 2017

合法文书档案介绍使用docker exec命令,在已运维的SQL Server
20一7容器中,推行sqlcmd命令举办连接和数据库使用。当然,也能够选取图形化的客户端,比方SQL
Server Management Studio也许Visual Studio的Server
Explorer来连接运营于Docker中的SQL Server 2017,方法与连接普通版本SQL
Server的方法一致。比如,下边是在Visual Studio的Server
Explorer中连连Microsoft SQL Server on Linux for Docker的功效:

997755.com澳门葡京 26

参照文书档案

  1. Run the SQL Server 2017 container image with
    Docker 
  2. Docker Repository:
    microsoft/mssql-server-linux

以上正是本文的全体内容,希望对咱们的上学抱有帮忙,也期望我们多多帮忙脚本之家。

您或者感兴趣的稿子:

  • 在docker上设置运营mysql实例
  • 在Docker中使用MySQL的教程
  • Docker + Nodejs + 卡夫卡 + Redis +
    MySQL搭建简易秒杀意况
  • 详解通过Docker搭建Mysql容器+汤姆cat容器连接处境
  • mysql 5.7 docker
    主从复制架构搭建教程
  • Docker mysql
    主从布局详解及实例
  • docker中mysql初始化及运转战败难题一下子就解决了方案
  • Docker搭建 Nginx+PHP+MySQL
    景况并配置WordPress试行
  • 听大人说Docker的PHP调用基于Docker的Mysql数据库
  • docker中利用mysql数据库详解(在局域网访问)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website