環境: Ubuntu 16.04

執行 docker image

取得並執行

$ docker run --name mssql-server-linux -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d microsoft/mssql-server-linux

檢查是否執行成功

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c73a9a4d0ef microsoft/mssql-server-linux "/bin/sh -c /opt/m..." 25 minutes ago Up 25 minutes 0.0.0.0:1433->1433/tcp mssql-server-linux

連線並執行 T-SQL 查詢

一旦執行起來後,你可以使用內建的 mssql tools 連線
docker exec -it mssql-server-linux /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'yourStrong(!)Password'
>1

試著執行一些查詢:建立資料酷、查詢資料庫、建立資料表、新增資料、查詢資料
1> SELECT Name from sys.Databases;
2> GO

Name                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                          
tempdb                                                                                                                          
model                                                                                                                           
msdb                                                                                                                            

(4 rows affected)


1> CREATE DATABASE testdb;
2> GO
1> USE testdb;
2> GO

Changed database context to 'testdb'.


1> CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);
2> GO
1> INSERT INTO inventory VALUES (1, 'banana', 150);
2> INSERT INTO inventory VALUES (2, 'orange', 154);
3> GO

(1 rows affected)

(1 rows affected)


1> SELECT * FROM inventory WHERE quantity > 152;
2> GO

id          name                                               quantity   
----------- -------------------------------------------------- -----------
          2 orange                                                     154

(1 rows affected)


1> QUIT

其他資訊

Data 資料目錄的儲存路徑
root@7c73a9a4d0ef:~# ls /var/opt/mssql/data/

master.mdf   model.mdf     msdbdata.mdf  tempdb.mdf   testdb.mdf
mastlog.ldf  modellog.ldf  msdblog.ldf   templog.ldf  testdb_log.ldf



在官方的 Dockerfile 設定檔中,我們可以發現並沒有 entrypoint.sh
MSSQL server 是在 docker instance 開機後直接被呼叫執行啟動的
CMD /opt/mssql/bin/sqlservr.sh

如果你想要以這個 image 延伸建立你的應用程式專案,並有自己的 entrypoint.sh,這裡有一個 範例 可以參考



參考資料

https://hub.docker.com/r/microsoft/mssql-server-linux/
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-connect-and-query-sqlcmd
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-troubleshooting-guide#connection
https://github.com/Microsoft/mssql-docker/blob/dc52dd5391fe397455430d04ffeb4ecb547e80fe/linux/preview/Dockerfile#L15