Azure VM 開啟 Ping 網路規則

Ping這個網路工具(指令)是時常被拿來測試網路是否通順的功能,除了可以測試機器的網路是否正常之外,有時候還會拿來觀察網路延遲的時間。

這次的需求是為了知道簡單網路行為的耗用時間,也就是延遲時間,所以透過Ping這個簡單的網路測試功能來獲得Client端到Server端的網路耗用時間(ms),用在計算某些服務耗用時間的扣除基準。

不過,雲端服務的防火牆預設是不開放任何網路封包從外面進入,必須根據需求在網路規則介面上建立,像是常用到的Web 80 Port,或是Windows遠端連線RDP的3389,所以這次需要在網路規則中加上Ping的允許規則。

閱讀全文

WSL啟動時,自動啟動Docker服務

如果有看前一篇文章,也就是在WSL中安裝原生的Docker環境,可能在電腦重新啟動之後輸入wsl進入Linux子系統時,會發現docker怎麼好像又不能使用了?

Docker服務未啟動(Server無法連線)
重新啟動wsl之後輸入docker的指令無法使用

其實這只是因為電腦重新啟動後,WSL環境也是重新啟動,所有額外安裝的程式與服務都需要手動重新啟動它們,所以這時候只要再輸入sudo service docker start,再執行docker的指令就可以正常工作了。

不過每次WSL重新啟動之後都需要輸入指令讓docker服務啟動,說實在的有一點麻煩,因為通常用到WSL的時候就是要在裡面跑docker container,所以如果在輸入wsl進入Linux子系統環境的時候就能夠自動將服務啟動的話,那不是方便很多嗎?

這一篇文章就是說明該如何在Linux子系統設定自動啟動docker服務,這個概念其實就和Windows作業系統啟動的時候要執行什麼事情所做的設定是相同的概念,所以也不限於使用在WSL的環境喔!

閱讀全文

同一台電腦可執行Windows與Linux Container?在WSL2安裝原生Docker環境

如果想要在同一台電腦中既可以執行Windows Container,又可以執行Linux Container,以便測試程式在不同環境之下執行的結果或是設定值的差異,該如何達到這樣的需求呢?

答案就是:利用Windows中的Linux子系統(Windows Subsystem for Linux, WSL)。

透過WSL安裝Linux子系統之後,可以在Linux子系統中安裝原生的Docker執行環境,在Windows環境中則是安裝Docker Desktop並且切換到使用Windows Container,這樣一來就可以在Windows環境執行Windows Container,Linux子系統中執行Linux Container了。

註:WSL是Windows 10的功能,版本又分為Version 1(WSL)與Version 2(WSL2),WSL2只能在Windows 10 2004版(組建19041以上)執行。(參考官方wsl文件說明)

在開始之前,先輸入wsl -l -v查看一下系統內安裝的Linux子系統是執行在哪一個版本(1或2)。
在Linux子系統中要執行原生的Docker,只能在Version 2的版本(WSL2)。

使用wsl -l -v查看系統中 Linux子系統執行的版本

閱讀全文

Windows 10 Home版本安裝Windows Sandbox沙箱功能

跟上一篇「Windows 10 Home家用版安裝Hyper-V與Docker」類似,Windows 10 Home的版本也沒有Windows Sandbox沙箱功能,這個Windows Sandbox沙箱功能是基於Hyper-V功能的Container,不過卻不會有體積龐大或是資源浪費的問題。

根據微軟的文件說明,Windows Sandbox沙箱功能在未安裝之前是一個大小約為30MB的壓縮封裝,即使安裝之後解壓縮大小也只會佔據大約500MB左右的磁碟空間。(當然你在沙箱裡面下載大檔案或是其它操作所產生的檔案是另外一回事)

閱讀全文

Windows 10 Home家用版安裝Hyper-V與Docker

公司一開始配的電腦是Acer的套裝電腦,裡面搭配的是Windows 10 Home版,作為一個開發者,Home版本的功能實在是不太符合需求,因為預設應該是沒有Hyper-V功能,如果要安裝Docker的話,也只能安裝Client工具…

不太想要動到OS重灌這一招,想到之前似乎有試過(看到)在Windows 10 Home版安裝Hyper-V與WSL,不過因為很久沒有寫部落格記錄,有些問題解決之後就沒有記錄,所以趁著這次解決這個問題並且將部落格從幾次亂搞之後最近放到Google Cloud Run上面執行,一併將這些操作記錄下來。

閱讀全文

單元測試與資料表自動遞增Id的問題

今天同事問了一個關於資料庫建立資料表重設Id遞增值的問題,主要是在單元測試中,使用的資料庫並不是每次都重新建立,而是在執行單元測試之前,將資料表中的資料刪除,並且將Id欄位的初始值重設。
為了達到上面的需求,所以在一開始的時候會執行刪除資料和DBCC CHECKIDENT (‘TableName’, RESEED, 0)將資料表的遞增種子重設為0,這樣在新增資料的時候就會+1變成從1開始(一般正常的情況)。

不過問題是,如果資料庫和資料表是第一次剛建立的,使用這個指令會讓Id欄位一開始的編號是0,期望的初始編號是1,但是在之後刪除資料並且使用上面的指令後,再新增資料的初始編號就會從1開始,符合期望的數字。

閱讀全文