場景
CentOS7中Docker的安裝與配置:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119028701
首先按照上面在CentOS7中安裝Docker
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
1、在CenoOS上新建目錄mssqlvol,在此目錄下新建data、log、secrets三個目錄,用來做SqlServer的數據卷映射。
2、拉取鏡像
docker pull mcr.microsoft.com/mssql/server:2019-latest
3、啟動
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=badao123456' -p 1433:1433 -v /mssqlvol/data:/var/opt/mssql/data -v /mssqlvol/log:/var/opt/mssql/log -v /mssqlvol/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/mssql/server:2019-latest
命令詳解:
-e 'ACCEPT_EULA=Y' 代表同意SQL SERVER使用條框,否則無法使用。
-e 'MSSQL_SA_PASSWORD=badao123456' 設置SA用戶的密碼,要求密碼長度必須至少為8個字符,並包含以下四組中的三組字符:大寫字母、小寫字母、以10為基數的數字和符號。
-p 1433:1433 將宿主機1443與容器1443端口進行映射
后面三個-v都是數據卷的映射
-d 后台運行
4、開放防火牆端口
firewall-cmd --zone=public --add-port=1433/tcp --permanent firewall-cmd --reload
5、進入容器
docker exec -it b998d4bee197 /bin/bash
后面跟的是容器ID
然后到/opt/mssql-tools/bin下,使用sqlcmd連接並創建一個表以及查詢所有表
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Badao123456
通過語句
3> CREATE DATABASE BADAO; 4> SELECT Name from sys.Databases; 5> go
效果:
輸入:
quit
退出語句
輸入exit
退出容器
6、連接SqlServer
下載SSMS
下載之后安裝,安裝之后連接
進入到上面映射的數據卷存放data數據的地方
可以看到數據庫映射也成功了
7、踩坑1
容器啟動后,過一會就沒了。可以通過查看日志的方式排查
查看容器運行日志,后面跟的是容器ID
docker logs -f b998d4bee197
日志提示:
Setup FAILED copying system data file 'C:\templatedata\master.mdf' to '/var/... 5(Access is denied)
原因是創建的數據卷映射的目錄權限不夠
賦予權限
sudo chmod 777 -R /mssqlvol
然后運行容器時使用sudo docker run,原來是直接使用docker run
8、踩坑2
再次運行還是一會就停止了。再次查看日志
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
這是因為密碼太簡單了,不符合要求
密碼長度必須至少為8個字符,並包含以下四組中的三組字符:大寫字母、小寫字母、以10為基數的數字和符號
9、踩坑三
使用Navicat連接時提示:
遠程主機強迫關閉了一個現有的連接,Client unable to establish connection(10054)
下載SSMS進行連接,可能跟沒開代理有關,所以使用Navicat連接不上。
10、官方教程
可以參照官方教程進行部署和配置