一、下載鏡像
docker pull microsoft/mssql-server-linux
二、啟動容器
docker-compose
version: '3'
services:
sqlserver:
image: microsoft/mssql-server-linux:latest
restart: always
privileged: true
container_name: sqlserver
ports:
- 1433:1433
volumes:
- ./data:/var/opt/mssql/data
environment:
ACCEPT_EULA: Y
SA_PASSWORD: aA123456
# 啟動
docker-compose up -d && docker logs -f sqlserver
驗證是否成功
-- 進入容器
docker exec -it sqlserver /opt/mssql-tools/bin/sqlcmd -S localhost -U sa
-- 查詢版本
SELECT @@VERSION
go
-- 查詢所有數據庫
SELECT Name FROM Master..SysDatabases ORDER BY Name
go
-- 查詢相關的數據表
SELECT Name FROM master..SysObjects Where XType='U' ORDER BY Name
go
三、連接服務
測試連接
找到navicat目錄下的sqlncli_x64.msi文件
點擊安裝
接受許可
下一步
安裝完整功能
安裝
完成
連接成功
測試是否成功
-- 查詢版本
SELECT @@VERSION
四、常見問題
4.1 內存太小
問題:
docker run --name sqlserver --restart=always -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=aA123456' -p 1433:1433 -d microsoft/mssql-server-linux
解決:
# 提示內存太小的,修改內存限制,這里改成512m
docker cp sqlserver:/opt/mssql/bin data/bin
# 備份文件
mv sqlservr sqlservr.old
# 使用python修改
python
oldfile = open("sqlservr.old", "rb").read()
newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e")
open("sqlservr", "wb").write(newfile)
exit()
# 授權
chmod 755 sqlservr
掛載文件到容器
version: '3'
services:
sqlserver:
image: microsoft/mssql-server-linux:latest
restart: always
privileged: true
container_name: sqlserver
ports:
- 1433:1433
volumes:
- ./data/data:/var/opt/mssql/data
- ./data/bin:/opt/mssql/bin
environment:
ACCEPT_EULA: Y
SA_PASSWORD: aA123456
Q.E.D.