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]#