2019年1月20日 星期日

CentOS Docker install sql server 2017 with volume

env: CentOS 7
        Docker docker-ce-18.05.0.ce
        SQL Server 2017 for Linux

Docker可以視為一種虛擬器,而使用的image很像以前使用過的Live光碟,只要放入光碟機啟動後,就是一個可以立即使用的作業系統。缺點是重新掛載就是回復到原本預設狀態。
這次要使用到volume的參數把docker image啟動後的狀態保存下來。

1.執行docker指令掛載SQL Server 2017 image
增加參數"-v",指定存放路徑"/dockervol"
command:
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=Passw0rd@1234' -p 1433:1433 -v /dockervol:/var/opt/mssql -d microsoft/mssql-server-linux:2017-latest


[root@localhost ~]# docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=Passw0rd@1234' -p 1433:1433 -v /dockervol:/var/opt/mssql -d microsoft/mssql-server-linux:2017-latest
cf7ccddde4fd629f2d1e4e4c58ca071127d5bfd5f3b5f31ed0c2ca467b25489f
[root@localhost ~]# docker container ps -a
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS                           PORTS                    NAMES
cf7ccddde4fd        microsoft/mssql-server-linux:2017-latest   "/opt/mssql/bin/sqls…"   5 minutes ago       Up 5 minutes                     0.0.0.0:1433->1433/tcp   infallible_rosalind


2.檢查存放路徑下的內容
可以發現到SQL Server的系統資料庫已經存放到"/dockervol/data"

[root@localhost /]# ls
bin   dev        etc   lib    media  opt   root  sbin  sys  usr
boot  dockervol  home  lib64  mnt    proc  run   srv   tmp  var
[root@localhost /]# cd dockervol/
[root@localhost dockervol]# ls
data  log  secrets
[root@localhost dockervol]# cd data
[root@localhost data]# ls
master.mdf   modellog.ldf  msdbdata.mdf  tempdb.mdf
mastlog.ldf  model.mdf     msdblog.ldf   templog.ldf
[root@localhost data]# pwd
/dockervol/data
[root@localhost data]#


3.我們利用sqlcmd在本機做連線查詢驗證

[root@localhost ~]# sqlcmd -S 0.0.0.0,1433 -U sa -P 'Passw0rd@1234'
1> select @@servername
2> go
                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
cf7ccddde4fd                                                                                                                   

(1 rows affected)


[root@localhost ~]# sqlcmd -S 100.168.1.202,1433 -U sa -P 'Passw0rd@1234'
1> exit
[root@localhost ~]#



4.再利用SSMS從遠端主機做連線查詢
















6.嘗試用sqlcmd建立測試DB: dbvolume
可以看到新的data file存放在路徑"/dockervol/data"


[root@localhost ~]# sqlcmd -S 0.0.0.0,1433 -U sa -P 'Passw0rd@1234'
1> create database dbvolume
2> go
1>

[root@localhost data]# ls -ltr
total 54976
-rw-r-----. 1 root root  8388608 Jul  6 11:20 tempdb.mdf
-rw-r-----. 1 root root  4653056 Jul  6 11:31 master.mdf
-rw-r-----. 1 root root  8388608 Jul  6 11:38 model.mdf
-rw-r-----. 1 root root  8388608 Jul  6 11:38 modellog.ldf
-rw-r-----. 1 root root   524288 Jul  6 11:56 msdblog.ldf
-rw-r-----. 1 root root 15466496 Jul  6 11:56 msdbdata.mdf
-rw-r-----. 1 root root  8388608 Jul  6 12:06 templog.ldf
-rw-r-----. 1 root root  2097152 Jul  6 12:09 mastlog.ldf
[root@localhost data]# ls -ltr
total 71360
-rw-r-----. 1 root root  8388608 Jul  6 11:20 tempdb.mdf
-rw-r-----. 1 root root  4653056 Jul  6 11:31 master.mdf
-rw-r-----. 1 root root   524288 Jul  6 11:56 msdblog.ldf
-rw-r-----. 1 root root 15466496 Jul  6 11:56 msdbdata.mdf
-rw-r-----. 1 root root  8388608 Jul  6 12:06 templog.ldf
-rw-r-----. 1 root root  8388608 Jul  6 12:14 model.mdf
-rw-r-----. 1 root root  8388608 Jul  6 12:14 modellog.ldf
-rw-r-----. 1 root root  8388608 Jul  6 12:14 dbvolume.mdf
-rw-r-----. 1 root root  2097152 Jul  6 12:14 mastlog.ldf
-rw-r-----. 1 root root  8388608 Jul  6 12:14 dbvolume_log.ldf
[root@localhost data]#



沒有留言:

張貼留言