WSL下Docker使用踩坑小記

2021-09-20 19:01:53 字數 2494 閱讀 6167

眾所周知,win10中開始提供linux子系統,即windows subsystem for linux,簡稱wsl,它可以讓我們在windows系統使用linux系統,自從有了這個新功能以後,博主果斷地放棄雙系統的方案,因為折騰起來實在花費時間。關於如何使用wsl,網上有非常多的文章可以參考,這裡不再贅述。今天想說的是,wsl下使用docker遇到的各種坑。

裝完wsl以後,對各種編譯環境的使用相當滿意,最近在研究日誌視覺化平台elk,其中需要使用docker來搭建環境,一頓sudo操作猛如虎,快速安裝完docker環境,結果發現熟悉的命令列居然無法正常工作,是可忍孰不可忍。

第乙個錯誤是,你按照官方文件安裝完docker,輸入docker -v,一切顯示正常的時候,此時,如果會執行docker run hello-world命令,會出現以下錯誤:

$ docker run hello-world docker: cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running?. see 'docker run --help'.
此時,你可能會嘗試通過執行systemctl start docker命令來啟動docker服務,因為錯誤資訊告訴我們,docker的守護程序沒有啟動,可你會發現這樣依然報錯。可是為什麼呢?明明docker都在wsl裡安裝成功了啊,事實上除了docker -v不需要依賴守護程序,其餘的命令都需要依賴守護程序,而wsl恰恰是不支援docker-engine的,所以,一種曲線救國的思路就是,讓wsl去連線宿主機上的docker engine。果然,還是要安裝docker for windows啊!那麼,剩下的事情變得就非常簡單啦,確保系統開啟hyper-v,然後安裝docker for windows,並開啟對宿主機docker的監聽,這些相信玩過docker的人都會啦!

接下來,我們給wsl中的docker設定宿主機的位址,在終端中輸入下列命令即可:

export docker_host=tcp://localhost:2375
此時,我們執行docker run hello-world命令,如果不出意外的話,我們會看到下面的畫面,這說明我們的docker環境已經正常工作啦:

博主按捺不住內心的激動,果斷安裝elk全家桶,體驗了下kibana的視覺化介面,開始思考:如何把儲存在mongodb中的日誌資料放到elasticsearch中。當然,這都是後話啦,因為博主馬上發現了wsl中docker的第二個坑,那就是終端關閉以後,針對宿主機的docker連線就結束了。

ok,為了解決這個問題,我們繼續在終端中輸入以下命令:

echo "export docker_host=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc
在使用docker的過程中,最令人困惑的部分當屬分割槽的掛載,因為你時刻要搞清楚,它到底表示的是容器內部的分割槽,還是宿主機上的分割槽。對於執行在wsl中的docker而言,它會採用類似/mnt/c/users/payne/這樣的更符合linux習慣的路徑,而docker for windows則會使用類似/c/users/payne/這樣更符合windows習慣的路徑。因此,如果你在使用docker的過程中,需要處理分割槽掛載相關的東西,乙個比較好的建議是修改wsl的配置檔案(如果不存在需要自行建立):

sudo nano /etc/wsl.conf

[automount]

root = /

options = "metadata"

WSL入坑與踩坑

這篇文章,將會娓娓道來我使用wsl的經歷,包括如何安裝以及早期玩家踩的一些坑。這是乙個很好的工具,與vscode簡直是絕配。wsl是什麼 適用於 linux 的 windows 子系統可讓開發人員按原樣執行 gnu linux 環境 包括大多數命令列工具 實用工具和應用程式 且不會產生傳統虛擬機器或...

antd tree使用踩小坑

小白時用tree的時候很容易踩的坑,當你回填了父節點的key時,未選中的子節點是會自動選中的 這時就很有可能忽略未被選中的子節點 官方給出的文件是有提示的 所以一般我們就要去處理獲得的資料。首先就是要去尋找所有子節點的key及父節點沒有children的key,如 const requestlist...

ubuntu 下安裝docker 踩坑記錄

ubuntu 下安裝docker 踩坑記錄 setp 0 移除舊版本docker sudo apt get remove docker docker engine docker.io step 1 安裝必要的一些系統工具 2 安裝gpg證書 寫入軟體源資訊 sudo add apt reposito...