Docker 基礎介紹
Docker 的發展歷程
Docker 最初是由 dotCloud(一家平台即服務公司,後來更名為 Docker, Inc.)的創始人 Solomon Hykes 於 2013 年推出。Docker 最初是作為 dotCloud 內部項目開發的,但由於其創新性和實用性,它迅速吸引了廣泛的關注和社群支持。
Docker 一經推出,就以其簡化和加速開發到部署流程的能力,重塑了軟體容器化和微服務架構的景觀。隨著時間的推移,Docker 不斷進化,增加了新的功能和改進,如 Docker Swarm(集群管理)和 Docker Compose(多容器應用定義),進一步鞏固了其在行業中的領導地位。
Docker 的核心概念
-
容器(Container):容器是 Docker 的核心概念。它是一種輕量級、可移植的、自包含的軟體打包方式,允許用戶將應用及其所有依賴、配置一起打包,確保在不同環境中一致運行。
-
映像檔(Image):容器是從映像檔創建的。映像檔是一個輕量級、只讀的模板,包含了運行應用所需的代碼、庫、環境變量和配置檔案。
-
倉庫(Registry):Docker 倉庫是用來存放映像檔的地方。Docker Hub 是最著名的公共倉庫,但用戶也可以建立私有倉庫來存儲和管理映像檔。
-
Dockerfile:Dockerfile 是一個文本檔案,包含了創建映像檔所需的所有指令。這使得映像檔的創建過程變得可重現且自動化。
-
容器網絡(Networking):Docker 允許通過設定網絡來控制容器之間以及容器與外部世界之間的通訊。
-
數據卷(Volumes):Docker 使用數據卷來持久化和共享容器的數據。這使得即使容器被刪除,數據仍然可以保留和重用。
Docker Hub
Docker Hub 的核心功能
-
映像檔存儲與分發:用戶可以將自己創建的容器映像檔推送(Push)到 Docker Hub,也可以從 Docker Hub 拉取(Pull)別人分享的映像檔。
-
公共與私有倉庫:提供公共倉庫供所有用戶使用,並允許創建私有倉庫來限制訪問權限。
-
自動建構(Automated Builds):連接到 GitHub 或 Bitbucket,當原始碼發生變更時自動建構並更新映像檔。
-
官方映像檔(Official Images):由 Docker 官方維護的映像檔,保證安全和質量。
-
社群與協作:用戶可以評論、評分映像檔,增進社群間的互動和協作。
Docker Hub 的重要性
Docker Hub 在容器化技術的生態系統中扮演著關鍵角色。它不僅使得映像檔的分享和部署變得簡單,還促進了開源社群和私有專案之間的協作。透過 Docker Hub,開發者可以快速找到所需的映像檔,從而加速軟體開發和部署流程。此外,它還支持自動化流程,提高了開發效率和應用的可靠性。
Docker Hub 與 Docker 的關聯
Docker Hub 是 Docker 技術生態中的重要組成部分,緊密結合 Docker 的核心概念和功能。它提供的映像檔服務完美契合 Docker 的容器化理念,使得應用的打包、傳輸和部署更加高效和靈活。對於使用 Docker 進行軟體開發和運維的團隊來說,Docker Hub 是不可或缺的工具之一。
安裝 Docker
在不同的作業系統中安裝 Docker 會有所不同。以下是 Windows、macOS 和 Linux 上安裝 Docker 的基本步驟。
Windows 上安裝 Docker
在 Windows 上,Docker 提供了 Docker Desktop,適用於 Windows 10 和更新版本的系統。
-
下載 Docker Desktop:
- 訪問 Docker 官方網站並下載 Docker Desktop 的安裝檔。
-
安裝 Docker Desktop:
- 運行下載的安裝檔。
- 跟隨安裝指引完成安裝。
-
啟動 Docker Desktop:
- 安裝完成後,啟動 Docker Desktop。
- 這可能需要開啟系統的虛擬化功能。
-
驗證安裝:
- 打開命令提示字元或 PowerShell,輸入
docker --version
來檢查 Docker 是否安裝成功。
- 打開命令提示字元或 PowerShell,輸入
macOS 上安裝 Docker
在 macOS 上,同樣使用 Docker Desktop 進行安裝。
-
下載 Docker Desktop:
- 訪問 Docker 官方網站並下載適用於 macOS 的 Docker Desktop 安裝檔。
-
安裝 Docker Desktop:
- 打開下載的
.dmg
檔案。 - 將 Docker 拖入「應用程式」資料夾。
- 打開下載的
-
啟動 Docker Desktop:
- 在「應用程式」資料夾中找到 Docker 並啟動它。
-
驗證安裝:
- 打開終端機(Terminal),輸入
docker --version
來確認 Docker 是否安裝成功。
- 打開終端機(Terminal),輸入
Linux 上安裝 Docker
在 Linux 系統中,Docker 的安裝依賴於具體的發行版。以下以 Ubuntu 為例介紹安裝步驟:
-
更新軟體套件列表:
sudo apt-get update
-
安裝 Docker 的必要套件:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
-
添加 Docker 的官方 GPG 鑰匙:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
設置 Docker 穩定版儲存庫:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
再次更新軟體套件列表(針對 Docker 儲存庫):
sudo apt-get update
-
安裝 Docker CE(社區版):
sudo apt-get install docker-ce
-
驗證 Docker 是否安裝成功:
sudo docker --version
建立第一個 Docker 容器
以下是利用 Nginx 的 Image 為例,來體驗 Docker 的操作。
步驟 1: 安裝 Docker
首先,確保您的系統已安裝 Docker。可以通過 Docker 官方網站下載並安裝適合您操作系統的 Docker 版本。
步驟 2: 拉取 Nginx 映像檔
使用以下指令從 Docker Hub 拉取 Nginx 映像檔(Image):
docker pull nginx
步驟 3: 建立 Nginx 容器
以下指令會建立一個新的 Nginx 容器,並將容器的 80 端口映射到主機的 8080 端口:
docker run --name my-nginx -d -p 8080:80 nginx
這裡 -d
代表在背景執行容器,--name
用於指定容器名稱。
步驟 4: 查看 Nginx 預設網頁
打開瀏覽器並訪問 http://localhost:8080
,您應該能看到 Nginx 的預設歡迎頁面。
管理容器
以下是一些基本的 Docker 容器管理指令:
- 停止容器
docker stop my-nginx
- 啟動容器
若容器已被停止,可以使用以下指令再次啟動:
docker start my-nginx
- 重啟容器
若要重啟一個正在運行的容器:
docker restart my-nginx
- 移除容器
停止容器後,可使用以下指令移除容器:
docker rm my-nginx
確保在移除容器前先將其停止。
注意事項
- 確保 Docker 服務正在運行。
- 確保所使用的端口未被其他應用佔用。
- 使用 Docker 時,可能需要管理員或超級用戶權限。
Docker 基本指令
以下 Docker 基本指令及其使用範例:
指令 | 描述 |
---|---|
docker pull | 從遠程倉庫下載指定的映像檔,用於本地使用。 |
docker run | 創建並啟動一個新容器,可指定映像檔及命令。 |
docker start | 啟動一個或多個已經創建但處於停止狀態的容器。 |
docker stop | 安全地停止一個正在運行的容器。 |
docker ps | 列出當前正在運行的所有容器及其狀態信息。 |
docker images | 顯示本機已下載的所有映像檔列表及其資訊。 |
docker rm | 刪除一個或多個指定的容器,釋放資源。 |
docker rmi | 移除一個或多個指定的映像檔,清理空間。 |
-
docker pull:從遠程倉庫下載映像檔(Image)
範例:下載官方的 Ubuntu 映像檔
docker pull ubuntu
範例:下載特定版本的 Nginx 映像檔
docker pull nginx:1.17
-
docker run:運行一個容器(Container)
範例:以交互模式運行 Ubuntu 容器,並開啟終端介面
docker run -it ubuntu /bin/bash
範例:在背景模式運行 Nginx 容器
docker run -d nginx
範例:運行一個容器並指定其名稱為 mynginx
docker run --name mynginx -d nginx
-
docker start:啟動一個或多個已停止的容器
範例:啟動名稱為 mycontainer 的容器
docker start mycontainer
-
docker stop:停止一個運行中的容器
範例:停止名稱為 mycontainer 的容器
docker stop mycontainer
-
docker ps:列出正在運行的容器
範例:列出所有正在運行的容器
docker ps
範例:列出所有容器,包括停止的
docker ps -a
-
docker images:列出本地的映像檔
範例:顯示本機所有下載或建立的映像檔
docker images
-
docker rm:刪除一個或多個容器
範例:刪除名稱為 mycontainer 的容器
docker rm mycontainer
-
docker rmi:刪除一個或多個映像檔
範例:刪除 Ubuntu 映像檔
docker rmi ubuntu
注意:刪除映像檔前需確保沒有任何容器正在使用該映像檔,或容器已經停止運作。