Docker 安裝Sqlserver


參考MSDN :Docker安裝SQLSERVER

Docker 已經安裝成功這里不再重述,現在安裝sqlserver:

1. 下載 SQLSERVER Image

首先百度找到 docker hub MSSQLserver的官方鏡像:鏡像地址

 

打開網址:可以看到官方網頁上已經給出了拉取的完整腳本:

 

 

 

 

 

直接復制鏡像腳本,執行即可(默認安裝最新版本的sqlserver,也可以選擇具體的tag版本進行安裝,可以參考網頁說明). 

 

docker pull mcr.microsoft.com/mssql/server

 

 docker image 查看 發現已經拉取成功,共1.5G大小

  

 

2:生成容器並運行 docker run

仔細瀏覽網頁,Description中已經給出了image的使用方法.

 看下參數的具體說明:

Requirements

  • This image requires Docker Engine 1.8+ in any of their supported platforms.

  • At least 2GB of RAM (3.25 GB prior to 2017-CU2). Make sure to assign enough memory to the Docker VM if you're running on Docker for Mac or Windows.

  • Requires the following environment flags

    ACCEPT_EULA=Y

    SA_PASSWORD=<your_strong_password>

    MSSQL_PID=<your_product_id | edition_name> (default: Developer)

  • A strong system administrator (SA) password: At least 8 characters including uppercase, lowercase letters, base-10 digits and/or non-alphanumeric symbols.

要求:Docker1.8以上 內存2G以上如果是2017最低3.5G內存,

         SA_PASSWORD :設置sa的密碼,必須包含大小寫、字母和數字、特殊符號混合才行

         MSSQL_PID:這里可以設置版本類型或者產品激活碼,默認是Developer即開發版本

 

最終完整腳本如下(增加了容器名稱sqlserver設置,MSSQL_PID設置的是Enterprise Core版本,默認image  mcr.microsoft.com/mssql/server):

docker run --name=sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=password*****' -e 'MSSQL_PID=2C9JR-K3RNG-QD4M4-JQ2HR-8468J' -p 1433:1433  -d mcr.microsoft.com/mssql/server

 

 

 

 OK,docker ps  可以看到已經運行成功了,開放防火牆后,在客戶端機器上遠程連接即可(經測試默認開啟了遠程連接無需配置)

默認sqlserver安裝在/var/opt目錄和/opt目錄

 SQLCMD運行:

docker exec -it <container_id|container_name> /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password>

 

 

總結:SQLSERVER 在docker下的安裝十分簡單,只需要2步就能完成

#1. 拉取SQLSERVER docker 鏡像
docker pull mcr.microsoft.com/mssql/server


#2.運行
docker run --name=sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=PWD********' -e 'MSSQL_PID=2C9JR-K3RNG-QD4M4-JQ2HR-8468J' -p 1433:1433  -d mcr.microsoft.com/mssql/server

  

補充:sqlserver數據存儲默認只存於容器內部,如果容器銷毀數據會出現丟失,為了長期保存我們創建啟動容器時需要在主機內存儲一份,這里使用掛載主機目錄到容器內部目錄的方式

在原有的docker run指令增加-v <host directory>:/var/opt/mssql命令參數來完成。

先在主機中新建目錄mssql_data用來存儲data

[root@dfdf var]# mkdir mssql_data
[root@dfdf var]# ls
account  adm  cache  crash  db  empty  ftp  games  gopher  kerberos  lib  local  lock  log  mail  mssql_data  nis  opt  preserve  run  spool  tmp  yp

創建后刪除舊的sqlserver容器,使用下列腳本重新生成容器

docker run --name=sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=8580555@Mf' -e 'MSSQL_PID=2C9JR-K3RNG-QD4M4-JQ2HR-8468J' -p 1433:1433  -v /var/mssql_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server

 

二次安裝無法啟動查看下錯誤日志(docker  logs):

# docker logs sqlserver
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created.  Errno [13]
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created.  Errno [13]

 

問題描述:

以根用戶的身份運行非根容器,如果需要,以根用戶的身份運行非根容器。 這還會將所有文件權限自動授予容器。

簡單的說就是權限問題,容器沒有權限訪問外部目錄

 

解決辦法:

修改目錄權限:

 chmod 777 /var/mssql_data

再次運行就可以了.

查看下掛載成功后的mssql_data,和容器內mssql目錄是一樣的了.復制拷貝可以直接從這個目錄上處理.

 

 其它功能:sqlcmd

--進入容器內部bash
docker exec -it sqlserver  bash


--打開sqlcmd
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "password"

 

 

 sql腳本都可以在這里直接輸入,記得要換行go以后才執行.

 

其它功能二:啟動代理

注意啟動代理的使用使用root用戶執行bash 否則會執行失敗

[root@local~]# docker exec -it -u root sqlserver bash
root@518c2b65b0fb:/# /opt/mssql/bin/mssql-conf set sqlagent.enabled true
SQL Server needs to be restarted in order to apply this setting. Please run
'systemctl restart mssql-server.service'.
root@518c2b65b0fb:/# exit   
exit
[root@local~]# docker stop sqlserver 
[root@local
~]# docker start sqlserver
[root@local
~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
518c2b65b0fb mcr.microsoft.com
/mssql/server "/opt/mssql/bin/perm…" 19 hours ago Up 5 seconds 0.0.0.0:1433->1433/tcp sqlserver
[root@local
~]#

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM