介紹
Docker 是一個開源的容器化平台,用於開發、部署和運行應用程式。它的主要目的是通過容器技術,實現應用的輕量級隔離,提供一致性、便攜性和高效性。
Docker 通過將應用及其依賴包裝到一個獨立的容器中,可以在任何支援 Docker 的環境中執行,無需擔心環境配置的差異問題。
VM跟Docker的差異?
Docker 基本組成
1. Docker Image(映像)
一個靜態模板,包含了應用程式運行所需的文件、程式碼、環境和依賴。
- 用途: 作為容器運行的基礎。
- 特點: 只讀、不可變。
2. Docker Container(容器)
基於 Image 啟動的實例,提供應用執行的隔離環境。
- 用途: 運行應用程式,類似於虛擬機但更加輕量。
- 特點: 可啟動、停止、刪除,且與主機共用內核資源。
3. Dockerfile
構建 Docker Image 的腳本文件,定義了從基礎映像到定製映像的構建過程。
- 用途: 自動化構建 Image 的工具。
- 特點: 基於指令逐步執行,如
FROM
、COPY
、RUN
等。
4. Docker Compose
用來定義和管理多容器應用的工具,使用 YAML 文件描述服務、網路和存儲。
- 用途: 快速啟動多容器應用。
- 特點: 透過
docker-compose.yml
實現服務間的協作。
5. Docker Network(網路)
提供容器之間以及容器與外部之間的連接。
- 用途: 配置隔離、橋接和端口映射等網路功能。
- 特點: 支援多種網路模式(如橋接、主機、自定義網路)。
6. Docker Volume(卷)
是保存資料的解決方案,確保資料不會因容器刪除而丟失。
- 用途: 存儲資料,如資料庫(DB)或日誌(Log)。
- 特點: 容器間可共享數據,方便備份和管理。
Docker的應用情境
- 開發與測試環境:
快速構建一致的環境,避免「Local運行正常,Production卻不行」的問題。 - 微服務架構:
每個服務以容器形式運行,易於管理和擴展。 - 持續整合/持續部署(CI/CD):
整合到 DevOps 流程中,實現自動化部署。 - 跨平台部署:
在不同的雲端或伺服器環境中,確保應用一致運行。 - 大數據和 AI 開發:
快速配置大數據處理框架或機器學習環境。
常用指令
- Images
- 拉取映像:
docker pull <image_name>
- 列出本機映像:
docker images
- 刪除映像:
docker rmi <image_id>
- Container
- 啟動容器:
docker run -it <image_name>
- 列出容器:
- 運行中:docker ps
- 所有:docker ps -a
- 停止容器:
docker stop <container_id>
- 刪除容器:
docker rm <container_id>
- Container 執行命令
- 進入容器:
docker exec -it <container_id> bash
- 檢視日誌:
docker logs <container_id>
接下來會詳細說明Images & Container到dockerfile後續的應用&說明