Docker 是一個開源平台,用於開發、交付和運行應用程式。Docker 使開發者能夠在一個隔離的環境(稱為 容器)中打包應用及其依賴,這樣可以確保應用在任何地方運行時都有一致的行為。Docker 是基於容器的虛擬化技術,與傳統的虛擬機不同,容器是輕量級的,啟動速度快,資源利用高效。
以下是 Docker 的詳細教學,幫助你快速掌握 Docker 的基本操作。
?? 一、什麼是 Docker?
Docker 是一個容器化平台,它允許開發者打包應用程序及其所有依賴(例如庫、配置等)為容器映像,然後可以在任何支持 Docker 的環境中運行。這樣一來,無論開發、測試、還是生產環境,應用的行為都可以保持一致。
容器 是輕量級的、獨立運行的單元,它們與其他容器共享主機操作系統的核心,這使得 Docker 容器更加高效。
? 二、如何安裝 Docker?
1️⃣ 在 Windows 上安裝 Docker
- 訪問 Docker 官網 並下載 Docker Desktop for Windows。
- 完成下載後,運行安裝程序,並按照提示完成安裝。
- 安裝完成後,啟動 Docker Desktop,Docker 會自動啟動並運行。
- 如果你使用的是 Windows 10 Home 版,需要啟用 WSL 2(Windows Subsystem for Linux)來運行 Docker,Docker Desktop 安裝過程會引導你設置 WSL 2。
2️⃣ 在 macOS 上安裝 Docker
- 訪問 Docker 官網 並下載 Docker Desktop for Mac。
- 完成下載後,運行
.dmg文件並按照提示安裝。 - 安裝完成後,啟動 Docker Desktop,Docker 將自動啟動並運行。
3️⃣ 在 Linux 上安裝 Docker
- 打開終端,更新包索引:
sudo apt update - 安裝所需的包:
sudo apt 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 的 APT 倉庫:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - 更新包索引並安裝 Docker:
sudo apt update sudo apt install docker-ce - 啟動並驗證 Docker 是否運行:
sudo systemctl start docker sudo systemctl enable docker sudo docker --version
? 三、Docker 基本命令
1️⃣ 檢查 Docker 版本
安裝 Docker 完成後,可以檢查 Docker 版本來確認安裝成功:
docker --version
2️⃣ 啟動 Docker 服務
在 Linux 上,Docker 可能需要手動啟動服務:
sudo systemctl start docker
3️⃣ 拉取 Docker 映像
Docker 容器運行在映像上,這些映像是應用和其依賴的包。你可以從 Docker Hub(Docker 的公共映像倉庫)拉取映像。
例如,拉取官方的 nginx 映像:
docker pull nginx
4️⃣ 運行容器
使用已經拉取的映像來創建並運行容器。例如,運行 nginx 容器:
docker run -d -p 80:80 nginx
-d:讓容器在後台運行。-p 80:80:將容器的端口 80 映射到主機的端口 80。
這樣,你就可以通過瀏覽器訪問 http://localhost,看到 nginx 的歡迎頁面。
5️⃣ 查看運行中的容器
查看當前運行的容器:
docker ps
6️⃣ 停止容器
要停止正在運行的容器,可以使用以下命令:
docker stop <容器ID或容器名稱>
例如:
docker stop 1234567890ab
7️⃣ 刪除容器
刪除停止運行的容器:
docker rm <容器ID或容器名稱>
8️⃣ 刪除映像
刪除不再需要的映像:
docker rmi <映像ID或映像名稱>
9️⃣ 查看容器日誌
如果需要查看容器的運行日誌,可以使用 logs 命令:
docker logs <容器ID或容器名稱>
? 四、Docker 進階操作
1️⃣ Dockerfile
Dockerfile 是一個文本文件,它包含了創建 Docker 映像的所有指令。通過 Dockerfile,你可以自動化映像的構建過程。
例如,創建一個簡單的 Dockerfile:
# 使用官方的 Node.js 映像作為基礎
FROM node:14
# 設置工作目錄
WORKDIR /app
# 拷貝當前目錄下的文件到容器中
COPY . .
# 安裝應用依賴
RUN npm install
# 暴露容器的端口
EXPOSE 3000
# 運行應用
CMD ["npm", "start"]
構建映像並運行:
docker build -t my-node-app .
docker run -d -p 3000:3000 my-node-app
2️⃣ Docker Compose
Docker Compose 是一個用來定義和運行多容器 Docker 應用的工具。你可以使用 YAML 文件來配置應用的服務,然後使用一條命令來啟動多個容器。
- 創建一個
docker-compose.yml文件:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
app:
image: my-node-app
ports:
- "3000:3000"
- 使用
docker-compose啟動所有服務:
docker-compose up
- 停止並刪除容器:
docker-compose down
3️⃣ Docker 網絡
Docker 容器可以連接到不同的網絡中。你可以創建自定義網絡,並讓容器之間進行通信。
創建自定義網絡:
docker network create my_network
運行容器並將其連接到自定義網絡:
docker run -d --name web --network my_network nginx
docker run -d --name app --network my_network my-node-app
? 五、常見問題與解決方法
1️⃣ Docker 容器無法啟動
如果容器無法啟動,請查看容器日誌來排查錯誤:
docker logs <容器ID>
2️⃣ 映像無法拉取
如果從 Docker Hub 拉取映像時出現問題,檢查網絡連接並確保 Docker Hub 正常工作。
3️⃣ Docker 容器過多
如果不再需要某些容器,請定期清理容器和映像:
docker system prune
這個命令會刪除所有停止的容器和不再使用的映像。