2019年2月26日 星期二

[Docker] Docker建立mssql-server-linux

[Docker] Docker建立mssql-server-linux

簡介

平時在Windows 安裝SQL Server都需要花不少時間,而試著在docker上安裝SQL Server on Linux,意外發現不用幾分鐘就完成所需要的安裝。

建立mssql-server-linux Container

這裡使用Docker Hub上的microsoft/mssql-server-linux

直接來建立container

sudo docker run --name 'MSSQL2017' \
  -e 'ACCEPT_EULA=Y' \
  -e 'SA_PASSWORD=!@#qweASD' \
  -e 'MSSQL_PID=Developer' \
  -p 1433:1433 \
  -d microsoft/mssql-server-linux:2017-latest
  • --name 指定Container名稱
  • ACCEPT_EULA=Y 確認接收使用者授權合約
  • SA_PASSWORD 指定sa密碼(密碼長度至少需為 8 個字元且符合 SQL Server 密碼需求)
  • MSSQL_PID 設定 SQL Server 版本或產品金鑰。(default: Developer)
  • -p 1433:1433 開放port的對應
  • -d 指定背景執行

啟動後可以確認Container狀況

sudo docker ps -a

Container Status


連接SQL Server

  1. 使用docker exec -it命令進入Container的互動模式(MSSQL2017為上面設定的Container 名稱)

    docker exec -it MSSQL2017 "bash"
    
  2. 進入容器後,以 sqlcmd 進行本機連線。 這裡sqlcmd必須指定完整路徑。(以SA帳號進行登入)

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'
    
  3. 進入sqlcmd後就可以自行新增資料庫或查詢資料。


使用SSMS連接mssql-server-linux

如果你的SQL server Container和執行SSMS的主機是同一台,可直接用localhost名稱進行連線。(下圖因為是兩台不同主機,所以我用ip進行連線)
SQL Server Login

Object Explorer


同場加映

上面Docker指令也可以寫成docker-compose.yml

version: '3'

services:
  MSSQL2017:
    image: microsoft/mssql-server-linux:2017-latest
    restart: always
    container_name: MSSQL2017
    ports:
      - 1433:1433
    volumes:
      - ./mssql:/var/opt/mssql
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=!@#qweASD
      - MSSQL_PID=Developer

之後可直接執行

sudo docker-compose up -d


參考資料

以 Docker 執行 SQL Server 容器映像
在 Docker 上設定 SQL Server 容器映像
microsoft/mssql-server-linux


如有錯誤或建議,歡迎留言指教,謝謝!!
(相關內容如有侵犯隱私或著作權,請協助通知刪除,感謝)

1 則留言:

  1. 我在用的時候 volumn加下去就會無法成功
    原本想要把bak直接放進去
    後來寫在dockerfile裡面做copy了

    回覆刪除