iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0

今天是第 Day 27 天!To-do List API 的功能差不多完成了, 昨天也幫專案加上了環境變數 .env 檔案,為了讓這個 To-do List 到處都可以跑 😆😆😆,最後這幾天會介紹 Docker雲端部署

這兩項技術也是鼎鼎有名,相信大家應該都有聽過~
那我們就開始吧!

今日大綱:

  1. Docker 是什麼?為什麼需要?
  2. Docker 的功能與概念
  3. Docker 的功能與概念
  4. Docker 的使用方式
  5. Docker 常用指令
  6. Docker 與雲端的關係(沒錯! Docker 和雲端是超級好麻吉 ✨)

Docker 是什麼? 為什麼需要?

有沒有看過一隻藍色鯨魚的圖案 🐳 ? 沒錯,它就是 Docker!

Docker 是一個用來「封裝、分發、執行應用程式」的平台,它讓我們的應用程式可以在任何環境下執行,而不用擔心系統的差異。

這跟前面說的 .env 檔案有什麼差別?
.env 檔案也是讓我們可以在不同環境下跑。

對~沒錯!
.env 檔案的存在也是方便我們可以在不同環境下順利執行程式,不過它跟 Docker 之間的差別是:.env 檔案提供的是「 資料庫或專案上需變動的參數調整 」的需求,讓我不用改程式,只要變更檔案中的設定,就可以跑服務;而 Docker 則是針對「 執行程式的系統環境 」需求,因為已經打包好了,所以把它丟到不同的電腦都可以跑。

Docker 讓你的程式 + 執行環境變成一個可以隨身攜帶的小電腦。

所以為什麼需要 Docker?

在開發中,可能會遇到:

  • 「 我的本地端可以跑耶,為什麼放到你的電腦就跑失敗了? 」
  • 「 你要跑這個專案時,要先安裝 Go、Node.js、PostgreSQL … 唷,不然會跑不起來 」(超麻煩🫠)
  • 「 每次部署都要重新設定環境變數和資料庫連線 」

而這些問題,只要交給 Docker 就解決了:

問題 解決方式
環境不一致 打包成容器,哪裡都能跑
安裝麻煩 一行指令就可部署整個系統
更新風險高 版本固定在 Image 中,不會衝突
維護成本高 每個服務(API、DB、前端)都可獨立容器化

Docker 把你的程式和執行環境(OS、套件、設定)全部打包成一個容器(Container),而其他人只要有 Docker,就能一鍵啟動這個容器。

就像打包一個「 可以自己運作的迷你電腦 」一樣,非常容易!


Docker 的功能與概念

前面有提到 Docker 就像小型電腦一樣,可以隨身帶著走。所以具備了以下優點:

  1. 跨平台 → Windows、macOS、Linux 都可以跑。
  2. 環境一致性 → 不只在我的電腦可以執行,別人的一樣可以。
  3. 部署快速 → 不用再重新安裝套件。
  4. 輕量 → 比起 VM,更輕、啟動更快速。

Docker 有幾個比較核心的概念說明和比喻:

名稱 說明 比喻
Dockerfile 告訴 Docker 如何做出 Image 的說明書 寫食譜的步驟
Image(映像檔) 描述如何建立容器 蛋糕食譜
Container(容器) 按照 Image 內容,實際執行起來的結果 按照食譜做出來的蛋糕 🍮

而 Docker 的主要功能則是:

功能 說明 範例
打包應用程式 將程式、套件、設定全部打包 Go + PostgreSQL API
快速啟動環境 幾秒內就可以啟動服務 docker run -p 8080:8080 app
一致的執行環境 不受系統差異影響 Windows / macOS / Linux
版本管理 Image 有版本標籤(tag) app:1.0app:latest
多容器協作 docker-compose 同時啟動多個服務 API + Database
方便部署到雲端 雲端主機支援 Docker 原生部署 AWS ECS、GCP Cloud Run、Azure Container Apps

Docker 的使用方式

了解 Docker 之後,就來安裝吧!
👉 Docker 官網:https://www.docker.com/

安裝 Docker :

  • macOS / Windows:下載 Docker Desktop
  • Linux:使用 apt install dockeryum install docker

啟動之後,可在終端機測試:

docker --version
docker run hello-world

Docker 的實際應用:

  • 個人專案:打包 To-do List API、部署到其他地方。
  • 團隊開發:每位成員都能用相同環境開發。
  • CI/CD:自動化測試、部署流程。
  • Demo / 教學:快速建立範例環境。

Docker 常用指令

這邊附上一些常用的指令給大家參考:

  1. Container 容器管理
指令 說明
docker ps 列出正在運行的容器
docker ps -a 列出所有容器(包含停止的)
docker stop <container_id> 停止容器
docker start <container_id> 啟動容器
docker restart <container_id> 重新啟動容器
docker rm <container_id> 刪除容器(刪除前,必須先停止容器)
docker logs <container_id> 查看容器輸出日誌
  1. image 映像檔管理
指令 說明
docker images 列出所有映像檔
docker pull <image> 從 Docker Hub 下載映像檔
docker build -t <name> . 從 Dockerfile 建立映像檔,-t 取名
docker rmi <image_id> 刪除映像檔
  1. 執行容器
指令 說明
docker run -it <image> /bin/bash 以互動模式啟動容器並打開 shell
docker run -p 8080:8080 <image> 對應容器端口到本機端口(API 開發必用)
docker run -d <image> 在背景執行容器

Docker 與雲端的關係

最後要來介紹 Docker 和雲端部署!由於很多服務現在都會希望可以不受網路的限制,在各個地方都可以連線使用,所以幾乎所有的雲平台都支援 Docker!

像是:

  • AWS ECS / ECR
  • Google Cloud Run
  • Azure Container Apps
  • Render / Fly.io / Railway

所以,只需要上傳 Docker Image,就可以直接啟動服務了! 是不是很方便~


上一篇
Day26 - 環境變數管理:打造可移植的專案架構
下一篇
Day28 - Docker 部署:讓 To-do List 跑在任何地方
系列文
Go,一起成為全端吧!—— 給前端工程師的 Golang 後端學習筆記30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言