MacOS环境,利用第三方工具成功连接Docker容器的MSSQL。

文主要是通过安装MSSQL,说明在MACOS里安装Docker的样例。也可以给Linux或Windows环境下的思路是一样的。只是在安装是有几个坑,浪费也蛮多的时间的。所以记录一下。

前言:

由于我的是MacOS环境下的,虽然我工作的环境是支持多平台的,但是有些业务还是MacOS没有的。比如MS SQL、或者堡垒机等等。

虽然,我在MacOS里,其实是已经安装了Odoo的开发和测试环境的,包括数据库等。但是触动我想安装Docker有几个方面的原因。

1.是因为我想安装MS SQL。基本上,搞企业信息化的人其中的一个技能就是要会SQL,由于我之前用SAP系统时,用的就是MSSQL。我的好多经典的资料都是MSSQL为背景的。短时间内我还没完全迁到PostgreSQL版本来,这需要一个过程。而且对于SQL来说,版本有时似乎也不是真的特别重要;主要还是语法SQL。

所以我的电脑上就有三个SQL的版本:MySQL、PostgreSQL、MSSQL。

2.如果Docker安装了MSSQL,那安装Odoo等其他服务还会有问题吗?
Docker的本原理,可以跨平台节省成本,甚至可以应用到阿里的ECS主机等。所以决定用自己的MacOS安装Dorcker作为初步认识。

以下是具体的安装过程

基本上的安装顺序为:1.安装Docker;2.安装镜像;3.配置容器;4.运行镜像,也是进入容器里去运行镜像。

1.安装Docker

具体的安装就不细说了。直接去官网下载一个docker.dmg文件(这里指的都是社区版)。

安装完要进行设置与配置,其中要说一点的是:要设置其内存至少4G。

Docker配置最低所需内存大小4G。
#安装完成可以执行Docker help进行查看帮助。我在这之前都没玩过Docker:
docker images #--查询安装的镜像;
docker rm/rmi #--表示删除容器/镜像;
docker ps -a #--表示查询正在运行的容器有那些。Up表示正运行。
2.安装镜像

至于安装什么镜像服务,主要有Docker镜像都能安装。要查询你想要安装的镜像名称、版本、具体名称等。我这里要安装的是,Microsoft SQL Server 2017版本。

2.1)拉取镜像:
docker pull mcr.microsoft.com/mssql/server:2017-latest #如下图

2.2)关联容器
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' \
-p 1433:1433 --name sql1 \
-d mcr.microsoft.com/mssql/server:2017-latest
#启动容器:
docker ps -a #查看所有容器,拿到容器的ID。
sudo docker start 7b7daa32a046 #启动容器。

发现导致容器一直启动不了,是“Exited”的状态。

一直找不到原因,看官网给的安装方法和查资料搞了一天,发现竟然是初始密码的原因

'SA_PASSWORD=<YourStrong!Passw0rd>' #这一步不能变。我把这里更改为自己的初始密码,是不对的。

重新删除容器,再关联,这一次我是没有再修改那个密码,打算成功创建后再修改。如下图,可以看到状态为:Up,表示成功了!

2.3)修改MSSQL的SA密码:
成功启动后就要修改SA密码:
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<YourStrong!Passw0rd>' \
-Q 'ALTER LOGIN SA WITH PASSWORD="*******"' #其中,*号表示自己的密码。

注:出现如下信息,需要把密码复杂度提高即可!
Password validation failed. The password does not meet SQL Server password policy requirements because it is not complex enough. The password must be at least 8 characters long and contain characters from three of the following four sets: Uppercase letters, Lowercase letters, Base 10 digits, and Symbols.

到这里算成功了!不过,不是每次都登陆容器,再登陆数据库,这样好麻烦。

3.接下来连接MSSQL:
1)先登陆容器
sudo docker exec -it sql1 "bash" #sql1是我在安装时给的名称。
2)连接数据库
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '************' # *号代表你的密码。

注意:连接数据后就可以进行数据库操作了,不过这里是标准的MS语法,如要执行后面要GO。
#退出镜像:quit.

3)外部工具连接MSSQL
我这里用的是Navicat Premium客户端。
连接时要填宿主的IP,即是本地的IP。

至此,利用Doker安装MSSQL2017就算完成了。

安装时,参考文档,如下:

  • https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-2017&pivots=cs1-bash
  • https://docs.docker.com/engine/reference/run/
  • https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-linux-ver15&pivots=cs1-bash#pullandrun2019

3.其他如Odoo镜像

Docker也有Odoo镜像的。安装方法找到Odoo也是一样有相关的操作方法。
如下链接:
https://hub.docker.com/_/odoo

安装方法一致。
由于我已经在MacOS本机已经安装了Odoo,所以就不需要在Docker里进行安装了。

End.

2 评论

  1. 请问docker pull始终不成功。是这样的,我尝试换了很多国内的镜像,网易,阿里等,有些直接time out
    能用的一直这样
    2017-latest: Pulling from mssql/server
    59ab41dd721a: Pulling fs layer
    57da90bec92c: Download complete
    06fe57530625: Download complete
    5a6315cba1ff: Download complete
    739f58768b3f: Download complete
    3a58fde0fc61: Download complete
    89b44069090d: Retrying in 1 second
    3f6b360deb9e: Waiting
    b8d0242f03c2: Waiting
    始终无法解决这个问题,希望可以协助我解决吗,我是一个小白,感谢相助
    我已经有点心态崩了!!!

请留下你宝贵的评论吧

请输入你的评论!
请在这里输入你的名字

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据