在windows安裝linux子系統Ubuntu 並安裝Docker的疑難排解

最近因為要練docker compose的指令
需要用到linux的指令
後來發現windows也有支援了!於是就來記錄一下建置環境跟踩雷的過程

在windows啟用Bash on Ubuntu

1.首先需要到控制台>更新與安全性>開發人員專用>勾選開發人員模式

2.再到控制台>程式和功能>開啟或關閉Windows功能>勾選 "適用於Linux的Windows子系統"

3.啟動之後要等他安裝 ,再重新開機
4.然後去Microsoft Store搜尋Ubuntu 並安裝

下次要使用的話可以直接搜尋Ubuntu或是powershell打bash就會開啟bash模式,就可以在上面打linux指令囉

在Ubuntu上安裝Docker
 

這邊其實都是固定指令
不多說直接來看吧

sudo apt-get remove docker docker-engine docker.io -y 
sudo apt-get autoremove -y 
sudo apt-get purge -y

sudo apt-get update
sudo apt-get install curl -y 
sudo apt-get install inux-image-extra-$(uname -r) 
sudo apt-get install linux-image-extra-virtual
sudo apt-get install apt-transport-https ca-certificates software-properties-common -y 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key finger 0EBFCD88

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo tail -2 /etc/apt/sources.list

sudo apt update 
    
sudo apt-get install docker-ce -y 

docker version 

sudo docker run hello-world

docker ps -l

 

安裝好docker後試試看run hello world吧
sudo docker run hello world

可是會發生錯誤

 

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 

解決方法

1.設定環境變數
 

echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc 

2.到windows docker設定
Settings>General 
勾選 "Expose daemon on tcp://localhost:2375 without TLS"

3.這樣就可以了
但是每次打指令都要加-H指定dameon 主機

還有一個方法是把他加到環境變數放在.bashrc文件
$vi ~/.bashrc

加上以下兩行
 

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin"

export DOCKER_HOST='tcp://0.0.0.0:2375'

然後執行source ~/.bashrc
再執行docker images就不會再出現錯誤了