在docker搭建mssql


[root@localhost ~]#docker pull microsoft/mssql-server-linux

[root@localhost ~]#docker images

[root@localhost ~]# docker run --name mssql -e'ACCEPT_EULA=Y' -e 'SA_PASSWORD=密碼' -p 1433:1433 --restart=always -d microsoft/mssql-server-linux #創建並運行容器

[root@localhost ~]# docker ps #
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a1c3d38e3bc docker.io/microsoft/mssql-server-linux "/opt/mssql/bin/sq..." 8 seconds ago Up 7 seconds 0.0.0.0:1433->1433/tcp mssql
411b83037ad8 portainer/portainer "/portainer" 2 hours ago Up About an hour 0.0.0.0:9000->9000/tcp prtainer

[root@localhost ~]# docker exec -it mssql /bin/bash #登入容器

root@baf42971d6d9:/# /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P '數據庫密碼' #
1> CREATE DATABASE test
2> go
1> exit

root@fc9e20f84879:/# mkdir /var/opt/mssql/backup #在容器內創建數據庫備份文件目錄
root@fc9e20f84879:/# exit

[root@localhost ~]# sudo docker cp /var/opt/mssql/bak/數據庫備份文件.bak mssql:/var/opt/mssql/backup #在宿主把.bak備份文件復制到容器

#進容器看看bak文件是否cp進去了。
[root@localhost ~]# docker exec -it mssql01 /bin/bash
root@baf42971d6d9:/# ll /var/opt/mssql/backup
total 179284
drwxr-xr-x. 2 root root 45 Mar 21 17:59 ./
drwxr-xr-x. 7 root root 73 Mar 21 17:51 ../
-rw-r--r--. 1 root root 183585280 Mar 12 15:00 數據庫備份文件.bak
root@baf42971d6d9:/#

[root@localhost ~]# sudo docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '數據庫密碼' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/數據庫備份文件.bak"' | tr -s ' ' | cut -d ' ' -f 1-2 #運行sqlcmd到邏輯文件名稱和備份內的路徑的列表容器內

LogicalName PhysicalName #運行結果
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MyHotel_dat G:\DATA\myhotel.mdf
MyHotel_log G:\DATA\myhotel.ldf

(2 rows

[root@localhost bak]# sudo docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '數據庫密碼' -Q 'RESTORE DATABASE 'myhotel' FROM DISK = "/var/opt/mssql/backup/數據庫備份文件.bak" WITH MOVE "MyHotel_dat" TO "/var/opt/mssql/myhotel.mdf", MOVE "MyHotel_log" TO "/var/opt/mssql/data/myhotel.ldf"' #還原數據庫

此處省略。。
Database 'myhotel' running the upgrade step from version 868 to version 869.
RESTORE DATABASE successfully processed 22313 pages in 3.375 seconds (51.650 MB/sec).
還原完畢。

[root@localhost ~]# docker top mssql
UID PID PPID C STIME TTY TIME CMD
root 12667 12650 0 01:47 ? 00:00:00 /opt/mssql/bin/sqlservr
root 12693 12667 3 01:47 ? 00:00:56 /opt/mssql/bin/sqlservr
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 7.6G 1.6G 4.3G 10M 1.8G 5.7G
Swap: 9.3G 0B 9.3G
[root@localhost ~]#


[root@localhost bak]# docker exec -it mssql /bin/bash #登入容器
root@4a1c3d38e3bc:/# /opt/mssql-tools/bin/sqlcmd -S localhost -U Sa -P '數據庫密碼' #連接數據庫
1> CREATE DATABASE myhotel #創建數據庫
2> go
1> drop database testDB #刪除數據庫
4> go
1>

docker run --name portainer -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -d docker.io/portainer/portainer

問題一:
運行mssql容器后不到十秒就自動停止了。
試過重啟
還有檢查命令發現多了句 -d=false

問題二:
[root@localhost ~]# sudo docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '數據庫密碼' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/backup/數據庫備份文件.bak"' | tr -s ' ' | cut -d ' ' -f 1-2
Msg 3201,
Cannot open
Msg 3013,
RESTORE FILELIST

#出現此錯誤,我發現是因為容器內沒有目錄導致,因為我mkdir是在 [root@localhost ~]# 宿主機上建立的,應該要在容器內mkdir才對,還有最后CP完后進容器看看是否有bak文件。

問題三:
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2749.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..


免責聲明!

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



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