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的環境喔!

自動啟動Docker服務

首先,進入WSL之後,輸入cd ~切換到使用者的根目錄,接著再輸入sudo nano .bashrc,透過nano編輯.bashrc這個檔案。

切換到使用者根目錄編輯.bashrc檔案

接著會看到裡面有一堆的設定值,直接在最上面第一行將啟動docker的指令sudo service docker start輸入進去,然後按下鍵盤的ctrl+x離開,詢問要不要儲存檔案的時候按y,接著再直接按enter就行了。

在.bashrc檔案的第一行加入啟動docker服務的指令

到這個動作其實已經可以讓WSL在啟動的時候自動將docker服務啟動起來,不過這樣子只能算是完成了一半,因為在WSL啟動的時候仍然需要一個麻煩的動作:輸入密碼。

WSL啟動時因為利用sudo去啟動docker服務,所以需要輸入密碼

省略輸入密碼設定

其實輸入密碼的這個動作也是可以設定成不需要輸入,同樣是透過編輯設定就行。

進入WSL之後輸入sudo visudo,進入設定編輯畫面,這次我們選擇在最下面一行輸入設定值:

<em>帳號</em> ALL=(ALL) NOPASSWD: ALL

將WSL環境執行的帳號加入sudoer,執行sudo指令的時候不需要輸入密碼

輸入完之後,同樣按下鍵盤的ctrl+x離開,詢問要不要儲存檔案的時候按y,接著再直接按enter離開就行了。

完成之後同樣離開WSL環境,並且將WSL終止(wsl -t <em>WSL子系統Distro名稱</em>),重新輸入wsl進入Linux子系統,可以看到下圖與上面的差異,需要輸入密碼的步驟已經省略掉了。

進入WSL環境並且啟動docker服務已經不需要再輸入密碼了

參考來源

發佈留言