類別:DevOps 工具
| 發布於 2025-06-25 20:47
Docker 容器技術
概念
Docker
容器是一種輕量級、可攜帶且自包含的虛擬化技術,用於打包、分發和運行應用程式及其相關的環境依賴。這種技術基於作業系統層級的虛擬化,讓開發者能夠以一致的方式在不同的電腦上運行應用程式,而不需要擔心環境的差異和依賴問題。
傳統虛擬機器的方式中,每個虛擬機包含完整的作業系統與應用程式,資源消耗大、啟動時間長。相比之下,Docker
容器共用主機作業系統核心,僅包含應用程式及其執行所需的庫與依賴,讓容器更輕量、高效,啟動速度也更快。
Docker 容器的幾個關鍵概念如下:
-
映像(Image)
映像是容器的唯讀範本,包含一個應用程式及其所需的作業系統環境與相依套件。映像可重複使用並可被多個容器共用。
-
容器(Container)
容器是映像的執行實例,提供獨立的執行環境。容器共用主機核心,但其檔案系統、行程、網路等是彼此隔離的。
-
Docker 引擎(Docker Engine)
Docker 的核心組件,用於建立、啟動、停止和刪除容器,亦能建立與管理映像。
-
容器編排(Container Orchestration)
用於管理大量容器的生命週期、自動部署、擴展與網路配置等。常用工具包含 Docker Compose、Kubernetes 等。
Docker 在開發、測試與部署應用程式上具備一致性與可攜性優勢,可有效解決「在我的電腦上可以運作」的問題,並簡化部署與擴展流程。
指令整理
docker version
顯示安裝於系統上的 Docker 版本資訊
- Client: Docker 客戶端版本(含 Git commit、Go 語言版本、Build 時間等)
- Server: Docker 引擎版本及其構建細節
- API version: 用於客戶端與伺服器通訊的 API 版本
- Min API version: 客戶端與伺服器最低支援的 API 版本
- Git commit: Docker 引擎的 Git 提交雜湊值
- Build: 完整版本與建置時間
- OS/Arch: 作業系統與架構資訊(例如 linux/amd64)
docker info
提供目前 Docker 系統的詳細資訊
- Containers: 容器數量(執行中、停止、總數)
- Images: 本地可用映像的數量
- Storage Driver: 使用中的儲存驅動(如 overlay2)
- Volumes: 本地儲存卷數量
- Networks: 可用的 Docker 網路數量
- CPUs: 系統 CPU 核心數
- Total Memory: 系統總記憶體容量
- Name: Docker 主機名稱
- ID: Docker 守護行程的唯一 ID
- Server Version: Docker 伺服器版本
- Operating System: 作業系統詳細資訊(名稱與版本)
- OSType: 作業系統類型(如 linux)
- Architecture: 架構類型(如 x86_64)
- Docker Root Dir: Docker 儲存根目錄位置
- Debug Mode: 是否啟用除錯模式
docker
顯示 Docker 的 CLI 使用說明與子指令清單
執行 docker 不加參數時,會列出所有可用的子指令與基本用法說明,例如:
docker run:執行一個容器
docker ps:列出執行中的容器
docker build:從 Dockerfile 建立映像
docker pull:從遠端倉庫下載映像
docker images:列出本地映像
docker exec:在容器中執行命令
docker logs:檢視容器輸出日誌
重要指令範例與說明
1. docker run
用來建立並啟動一個新的容器。
範例:
說明:
--name my-nginx:給容器命名為 my-nginx,方便管理。
-d:以背景模式(detached)執行容器。
-p 8080:80:將主機的 8080 連接埠映射到容器的 80 連接埠。
nginx:使用官方的 nginx 映像。
此指令會在背景啟動一個 nginx 容器,並可從主機的 http://localhost:8080 訪問 nginx。
常用選項:
-it:互動式執行容器(適用於需要使用終端機的容器)
--rm:容器停止後自動刪除
-v /host/path:/container/path:掛載主機目錄到容器中(資料持久化)
--env VAR=value:設定環境變數
2. docker build
用於從 Dockerfile 建立映像。
範例:
假設有以下 Dockerfile:
執行建立映像的指令:
說明:
-t my-php-app:給建立完成的映像取名為 my-php-app。
.:Dockerfile 所在目錄。
成功後,可以用 docker images 查看剛建立的映像。
3. 其他常見指令與注意事項
docker ps
加入 -a 可以列出所有容器(包含停止的):
docker stop /
docker start
停止與啟動已存在容器:
docker exec
在已啟動的容器中執行命令:
說明:以互動模式進入容器 my-nginx 的 bash shell。
注意事項
- 容器內的資料預設是臨時的,容器刪除後會遺失資料。若需資料持久化,請使用卷(volume)或掛載目錄。
- Docker 映像版本建議指定明確版本號(如
nginx:1.21),避免使用 latest
造成環境不一致。
- 建立映像時,應盡量減少層數與大小,提高建置效率與容器啟動速度。
- 使用
.dockerignore 檔案排除不必要的檔案,減少映像大小。
Docker 容器技術
概念
Docker 容器是一種輕量級、可攜帶且自包含的虛擬化技術,用於打包、分發和運行應用程式及其相關的環境依賴。這種技術基於作業系統層級的虛擬化,讓開發者能夠以一致的方式在不同的電腦上運行應用程式,而不需要擔心環境的差異和依賴問題。
傳統虛擬機器的方式中,每個虛擬機包含完整的作業系統與應用程式,資源消耗大、啟動時間長。相比之下,Docker 容器共用主機作業系統核心,僅包含應用程式及其執行所需的庫與依賴,讓容器更輕量、高效,啟動速度也更快。
Docker 容器的幾個關鍵概念如下:
映像(Image)
映像是容器的唯讀範本,包含一個應用程式及其所需的作業系統環境與相依套件。映像可重複使用並可被多個容器共用。
容器(Container)
容器是映像的執行實例,提供獨立的執行環境。容器共用主機核心,但其檔案系統、行程、網路等是彼此隔離的。
Docker 引擎(Docker Engine)
Docker 的核心組件,用於建立、啟動、停止和刪除容器,亦能建立與管理映像。
容器編排(Container Orchestration)
用於管理大量容器的生命週期、自動部署、擴展與網路配置等。常用工具包含 Docker Compose、Kubernetes 等。
Docker 在開發、測試與部署應用程式上具備一致性與可攜性優勢,可有效解決「在我的電腦上可以運作」的問題,並簡化部署與擴展流程。
指令整理
docker versiondocker infodocker執行
docker不加參數時,會列出所有可用的子指令與基本用法說明,例如:docker run:執行一個容器docker ps:列出執行中的容器docker build:從 Dockerfile 建立映像docker pull:從遠端倉庫下載映像docker images:列出本地映像docker exec:在容器中執行命令docker logs:檢視容器輸出日誌重要指令範例與說明
1.
docker run用來建立並啟動一個新的容器。
範例:
說明:
--name my-nginx:給容器命名為my-nginx,方便管理。-d:以背景模式(detached)執行容器。-p 8080:80:將主機的 8080 連接埠映射到容器的 80 連接埠。nginx:使用官方的 nginx 映像。此指令會在背景啟動一個 nginx 容器,並可從主機的
http://localhost:8080訪問 nginx。常用選項:
-it:互動式執行容器(適用於需要使用終端機的容器)--rm:容器停止後自動刪除-v /host/path:/container/path:掛載主機目錄到容器中(資料持久化)--env VAR=value:設定環境變數2.
docker build用於從 Dockerfile 建立映像。
範例:
假設有以下
Dockerfile:# 使用官方 PHP 7.4 映像為基底 FROM php:7.4-cli # 複製本地程式碼到容器內 COPY . /usr/src/myapp # 設定工作目錄 WORKDIR /usr/src/myapp # 執行應用程式 CMD ["php", "index.php"]執行建立映像的指令:
說明:
-t my-php-app:給建立完成的映像取名為my-php-app。.:Dockerfile 所在目錄。成功後,可以用
docker images查看剛建立的映像。3. 其他常見指令與注意事項
docker ps加入
-a可以列出所有容器(包含停止的):docker stop/docker start停止與啟動已存在容器:
docker exec在已啟動的容器中執行命令:
docker exec -it my-nginx /bin/bash說明:以互動模式進入容器
my-nginx的 bash shell。注意事項
nginx:1.21),避免使用latest造成環境不一致。.dockerignore檔案排除不必要的檔案,減少映像大小。