當我們在不同電腦安裝環境時,也就是安裝 Nginx、PHP、MySQL 時,時常會遇到一個問題,在不同電腦會裝到不同的版本,這也導致了在測試環境正常運作的程式,放到正式環境卻發生錯誤
如果有了 Docker 我們就能確保在不同電腦中的環境一致性,這樣就不會再出現像「我在測試站測很正常阿,你正式站炸掉不是我的問題吧」這樣的常見問題
另一個使用 Docker 的情況,如果想在同一台電腦上開發或部屬需要不同環境的專案,就必須不斷地進行環境切換,這事件非常煩人的事,有了 Docker 我們就可以輕鬆的隔離每個專案的環境,使開發或更加的方便快速
講了這麼多,那容器化技術到底是什麼,為了方便理解要先區分一下容器內和容器外的世界
在容器外看容器就好像是程式一樣,它可能是一個腳本程式跑完就結束了,也可能是一個常駐程式,不去關掉它,它就會一直不斷執行
在容器內看容器就好像是一個作業系統一樣,可以執行任何的系統操作,像是讀寫檔案、使用網路、安裝各種程式,基本上很難區分自己是不是在容器裡面
把程式放到容器中執行的話,就不需要在容器外(宿主機上)安裝程式所需的環境了,只需要在容器裡面設定好環境就可以了
這樣只要把不同的容器跑起來就可以創造不同的環境,達成在同一台電腦上開發不同的專案,也能夠在不同的電腦中使用相同的容器,讓裡面的程式以為自己是跑在同一台電腦中
Docker 是一個非常流行的工具,它實現了這個容器化的概念,也有其他容器化技術的工具,不過選最主流的,遇到問題時最好找答案了
首先還是打開官網,找到下載的地方
https://docs.docker.com/get-docker/
我用的系統是 debian,所以就點 debian 的安裝方式
https://docs.docker.com/engine/install/debian/#install-using-the-repository
更新一下套件
sudo apt update && sudo apt upgrade
設定 Docker 的 apt 儲存庫,告訴 apt 要去哪邊載 Docker
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
安裝 Docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
測試 Docker
sudo docker run hello-world
這樣就安裝成功囉
從官網找到 Windows 的載點
https://docs.docker.com/desktop/install/windows-install/
下載安裝程式
開始安裝
問說要不要建立桌面捷徑,我不想要所以就取消了
繼續安裝,並且幫你做了一些系統設定
安裝完後會需要重新啟動電腦,就把該存的東西存一存然後按下中間的按鈕吧
重新啟動電腦後會出現使用者協議,還有大企業使用記得付錢,就直接按 Accept 就可以了
右下角還會出現一個鯨魚小 icon,表示 Docker 正在運作
它說我的 WSL 版本太低了要先更新
那就先來更新一下
wsl --update
再次啟動 Docker Desktop,我電腦好慢
現在就可以開始使用 Docker 囉
在 VSCode 中也有 GUI 工具
https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker
不想用 GUI 介面的話,用終端機也是可以操作的