通常在本机开发环境中需要搭建所有的服务,还要修改本地的hosts,实在是不胜其烦。如今有了docker,完全不用污染本地环境,且看老司机带你搭建一个asp.net core的开发环境集群。愿你走出虚拟机,归来仍是干净的开发机。

教程比较长,所以分成多篇连载。

First things first:需要安装一个数据库,如今有了mssql on linux,真是太棒了,原来mssqlserver中的测试数据都可以无缝迁移过来。

docker的安装细节大家自己找找看

  1. 进入bash,执行以下命令
cd ~
mkdir mssql
cd mssql
vim Dockerfile
  1. 输入以下Dockerfile脚本
# mssql-server-linux
# Maintainers: Microsoft Corporation (LuisBosquez and twright-msft on GitHub)
# GitRepo: https://github.com/Microsoft/mssql-docker # Base OS layer: Latest Ubuntu LTS.
FROM microsoft/mssql-server-linux # 设置证书
ENV ACCEPT_EULA Y # 设置sa帐户的密码
ENV SA_PASSWORD Sql123123. # Default SQL Server TCP/Port.
EXPOSE 1433 # Copy all SQL Server runtime files from build drop into image.
#COPY ./data /data # 挂载一个数据卷,用于放置脚本和备份数据
VOLUME /data # Run SQL Server process.
CMD /opt/mssql/bin/sqlservr.sh

保存并退出:wq

  1. 生成镜像docker build -t mssql .,最后一个点别忘了。

  2. 创建一个目录以供mssql挂载: mkdir mssqldata

  3. 启动容器docker run -d -v /(!绝对路径!)/mssqldata:/data mssql,以后就使用该容器提供的数据库服务,不要轻易删除,可以stop/restart。

  4. 容器正常运行以后,可以直接进入SqlCmd操作数据库:docker exec -it <container_id|container_name> /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password> (ps:SqlCmd是一种命令行管理工具,还可以通过VS Code使用图形化管理)

很多情况下,要通过Sql脚本恢复数据库,这时候就不能直接进入SqlCmd了。

我们先把sql脚本复制数据卷对应的本机目录下,我上面指定的是/(!绝对路径!)/mssqldata

首先,复制一个sql脚本到数据卷中/(!绝对路径!)/mssqldata/testdb.sql,我的testdbd.sql中包含了data & scheme。(mssqlserver生成sql脚本的过程大家应该是知道的。)

注意!

如果脚本中有创建mdf文件的语句:

 CONTAINMENT = NONE
ON PRIMARY
( NAME = N'TestDb', FILENAME = N'C:\xxx\TestDb.mdf' , SIZE = 4096KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'TestDb_log', FILENAME = N'C:\xxx\TestDb_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

那么应该把地址改成数据卷的地址,本例中改为FILENAME = N'/data/TestDb.mdf‘,还有一个ldf文件可别忘了。

这样做是为了保证镜像干净。

  1. 进入数据库容器:docker exec -it <container_id|container_name> /bin/bash (PS:命令docker ps -a可以查看到该容器的id和name,或者在启动容器的时候指定name)

  2. /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password> -i /data/testdb.sql,此处的-i参数就表示执行后面的sql脚本。前面已经把sql脚本放在了数据卷中,所以在容器的/data中就能拿到了。

完成了mssql on linux的安装和数据恢复,后面就要使用此docker容器作为数据库服务了。如果你对docker的基本命令还不熟悉的话,建议去官网看看文档,多练几遍就可以了,没什么难度。

感慨一句,mssql on linux的docker镜像文档里明确指出里需要至少3.25GB的内存,但是实际上没那么夸张,跑了一个数据库实例也才使用600MB,相对于mssqlserver已经好太多了。

接下来,会讲解如何使用docker-compose搭建集群。

老司机带你开飞机 一: mssql on linux 安装指导的更多相关文章

  1. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  2. 老司机带你走进Core Animation

    为什么时隔这么久我又回来了呢? 回来圈粉. 开玩笑的,前段时间ipv6被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...

  3. Kali Linux来袭~老司机带你进击

    Kali是BackTrackLinux完全遵循Debian开发标准彻底的完全重建.全新的目录框架,复查并打包所有工具,我们还为VCS建立了Git树. 本次推荐内容主要介绍Kali-Linux的安装,包 ...

  4. 老司机带你玩转面试(3):Redis 高可用之主从模式

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  5. 老司机带你玩转面试(4):Redis 高可用之哨兵模式

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  6. 老司机带你玩转面试(5):Redis 集群模式 Redis Cluster

    前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...

  7. 老司机带你用vagrant打造一站式python开发测试环境

      前言 作为一个学习和使用Python的老司机,好像应该经常总结一点东西的,让新司机尽快上路,少走弯路,然后大家一起愉快的玩耍. 今天,咱们就使用vagrant配合xshell打造一站式Python ...

  8. 老司机带你体验SYS库多种新玩法

    导读 如何更加愉快地利用sys库做一些监控? 快来,跟上老司机,体验sys库的多种新玩法~ MySQL5.7的新特性中,非常突出的特性之一就是sys库,不仅可以通过sys库完成MySQL信息的收集,还 ...

  9. Jmeter 老司机带你一小时学会Jmeter

    Jmeter的安装   官网下载地址:http://jmeter.apache.org/download_jmeter.cgi 作为Java应用,是需要JDK环境的,因此需要下载安装JAVA,并且作必 ...

随机推荐

  1. IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决

    问题: 在IE浏览器下面,登陆的时候老是登陆不上,但是打开控制台的时候再登陆却能登陆上. 分析: 通过抓包,发现,在不打开控制台的时候,少了一个接口的请求,却返回了改接口的返回信息,但是返回信息并不是 ...

  2. 使用mysql_Front链接mysql,出现警告access denied for user ''@'localhost'

    刚刚安装好的mysql5.7,想来使用工具方便一下,却一直有报这个错误: 最后找出原因:我给root用户设置的密码神不知鬼不觉的消失了,无奈, 解决办法一: cmd->mysql -h loca ...

  3. velocity中使用枚举

    版权声明:本文为博主原创文章,转载请注明出处,欢迎使劲喷 一.为什么要在velocity中使用枚举 1.目前接触到的系统,枚举通常用来在程序中定义数据字典. 举个支付的例子,比如一个字段用来标识一条记 ...

  4. HTTP协议分析

    一.域名概述 1.域名解析的作用: 主机数量增多时,IP地址不容易记忆,域名方便记忆.域名记忆更加直观. 2.hosts文件 早期通过hosts文件进行域名的解析,Linux系统中hosts文件存放路 ...

  5. 关于label和span设置width无效问题解决方法

    转:http://www.jb51.net/web/113507.html 大家可能不知道默认情况下label.span 设置width 是无效的,只有当display:block时,我们所设置的wi ...

  6. nginx+lua安装配置

    1.选定源码目录选定目录 /usr/local/ cd /usr/local/ 2.安装PCRE库cd /usr/local/wget ftp://ftp.csx.cam.ac.uk/pub/soft ...

  7. PyQt QListWidget修改列表项item的行高

    百度,谷歌之后都说用setHintSize(self,QCore.QSize(width,height)),然并卵,后来用qss修改就可以了,具体用法如下 # emaillist是我给QListWid ...

  8. Alamofire源码解读系列(十)之序列化(ResponseSerialization)

    本篇主要讲解Alamofire中如何把服务器返回的数据序列化 前言 和前边的文章不同, 在这一篇中,我想从程序的设计层次上解读ResponseSerialization这个文件.更直观的去探讨该功能是 ...

  9. PRINCE2的好处是什么?使用PRINCE2受益非浅

    项目管理促进了全球许多公共部门与私营企业的经济活动. 优秀的项目管理意味着使用更少的资源在更短的时间内达到一个成功的结果,经过良好培训的项目经理能够帮助组织更加富有创新力,取得成功. 对那些希望展现自 ...

  10. python非转基因HTTP请求库--Requests: 让 HTTP 服务人类

    快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Req ...