Mac下Docker容器运行SQL Server 2017
来源:互联网 发布:如果当时 知乎 编辑:程序博客网 时间:2024/06/05 19:25
首先下载SQL Server2017的最新镜像:
为了运行,需要调整Docker的运行RAM大小最小为4GB:
启动一个容器(注意,命令的参数中,在Linux/Mac平台下是单引号,而在Windows平台下是双引号):
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -e 'MSSQL_PID=Developer' -p 1433:1433 --name sql_server2017 -d microsoft/mssql-server-linux:2017-latest
(初始密码必须为<YourStrong!Passw0rd>,否则启动后失败退出容器,后面再修改密码即可)
SQL Server2017容器已经启动好了。
为了可以持久化数据,实际使用需要加-v参数来映射数据卷到/var/opt/mssql
修改SA用户的密码
docker exec -it sql_server2017 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourStrong!Passw0rd>' -Q 'ALTER LOGIN SA WITH PASSWORD="******"'
如果密码过于简单会报如下错误,我们设复杂一点的即可:
连接到SQL Server容器
docker exec -it sql_server2017 "sh" --> 从启动的容器信息看到,使用的shell是/bin/sh,因此需要使用"sh"
进入容器后,连接到数据库:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'jin*******'
登录数据库后会出现提示符:'1>'
再输入命令后,需要执行go才会执行上面输入的语句。
上面是在容器内进行的,下面回到宿主机,这里是Mac系统进行编程连接,首先,需要安装Homebrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
接着安装ODBC驱动和针对SQL Server的SQL命令行工具
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
ACCETP_EULA=y brew install --no-sandbox msodbcsql mssql-tools
安装成功后,现在来连接容器的数据库,命令如下:
sqlcmd -S 127.0.0.1 -U sa -P **** (此时,该命令是在宿主机下执行的了)
查看下数据库版本:
正常连接。现在基于python来测试下,首先需要安装针对sql server的python驱动: pip install virtualenv,然后依次执行如下命令:
注意,此时使用的是venv目录下的python:
为了测试,建立一个测试的数据库:
sqlcmd -S 127.0.0.1 -U sa -P **** -Q "CREATE DATABASE IHouse;"
创建一个表:
sqlcmd -S 127.0.0.1 -U sa -P jingtian,nuli9 -Q "use IHouse; CREATE TABLE test(id int, name varchar(10));"
编写python测试脚本:
import pyodbcserver='127.0.0.1' # localhost会连接超时,需要为IP地址database='IHouse'username='sa'password='*****'cnxn=pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+password)cursor=cnxn.cursor()print('insert data...')tsql = "INSERT INTO test (id, name) VALUES(?,?);"with cursor.execute(tsql, 1, 'Jim'): print ('Insert OK.') print('Read data...')tsql = "SELECT * FROM test;"with cursor.execute(tsql): row = cursor.fetchone() while row: print(str(row[0]) + " " + str(row[1])) row = cursor.fetchone()结果:
- Mac下Docker容器运行SQL Server 2017
- docker容器下运行tomcat、部署应用
- [Docker]2.运行docker容器
- 运行docker容器
- 运行Docker容器
- 运行docker容器
- docker 容器后台运行
- Docker运行交互式容器
- Mac OS下ssh连接docker的容器全流程
- docker(三):Mac docker 运行tomcat镜像创建一个容器
- CentOS7.2下安装Docker并运行第一个容器
- MAC下安装运行docker环境下的Griffin_demo
- Mac安装运行Docker
- docker(六):Mac docker 如何进入容器
- 在Azure上的Ubuntu Docker运行SQL Server
- 在 Azure 上的 Ubuntu Docker 运行 SQL Server
- docker搭建 存储 运行 容器
- 运行第一个Docker容器
- 第十章g2o_custonbundle/common/projection.h
- Redis数据编码方式详解
- POJ 3368 Frequent values (RMQ)
- JavaWeb-Servlet-News(CURD)
- Java-基础知识
- Mac下Docker容器运行SQL Server 2017
- PAT 甲级 1075. PAT Judge (25)
- π 的定义(极限)
- CSS导航栏制作
- 使用 RecyclerView 实现简单时间轴
- Springboot学习笔记(二)
- poj 2386--Lake Counting
- 《c primer plus》笔记<一>
- github上传本地项目指南