docker run
是 Docker 的一個核心命令,用於創建並運行容器。它結合了 拉取映像 (pull)、創建容器 (create) 和 啟動容器 (start) 的功能,提供了快速啟動容器的能力。
以下是 docker run
的主要功用及功能介紹:
主要功用
創建容器:
- 基於指定的 Docker 映像創建一個新的容器實例。
運行容器:
- 啟動創建的容器並執行指定的命令(默認為映像內的
ENTRYPOINT
或CMD
)。
- 啟動創建的容器並執行指定的命令(默認為映像內的
自動下載映像:
- 如果指定的映像尚未本地存在,
docker run
會自動從 Docker Hub 或其他註冊伺服器拉取。
- 如果指定的映像尚未本地存在,
容器配置與運行管理:
- 支援傳入多種參數,讓用戶可以靈活地配置容器(如網路、端口映射、環境變數等)。
基本語法
- OPTIONS:可選參數,用於配置容器的運行行為。
- IMAGE:指定用於創建容器的映像。
- COMMAND 和 ARG:可選,覆蓋默認的命令或傳遞額外參數。
常見功能與用法
1. 前台運行容器
默認情況下,docker run
會啟動容器並附加到當前終端,顯示容器內的輸出。
- 使用
ubuntu
映像,運行echo
命令。
2. 後台運行容器 (-d
)
使用 -d
選項讓容器在後台運行(即 分離模式)。
- 在後台啟動一個 Nginx 容器。
3. 設置端口映射 (-p
)
使用 -p
選項將容器內的服務端口映射到主機端口。
- 主機的 8080 埠映射到容器內的 80 埠,這樣主機可通過
http://localhost:8080
訪問容器中的 Nginx。
4. 設置環境變數 (-e
)
通過 -e
傳遞環境變數到容器中。
- 設置 MySQL 的 root 密碼。
5. 掛載卷(數據持久化) (-v
)
使用 -v
選項將主機目錄掛載到容器內部。
- 主機的
/my/data
目錄掛載到容器內的/data
,實現數據共享與持久化。
6. 命名容器 (--name
)
通過 --name
為容器指定一個名稱,方便管理。
- 創建一個名稱為
my-nginx
的 Nginx 容器。
7. 限制資源 (--memory
、--cpus
)
可以通過選項限制容器使用的 CPU 和內存資源。
- 限制容器最多使用 512MB 的內存和 1 個 CPU 核心。
8. 交互模式 (-it
)
使用 -it
啟動容器,進入交互式終端。
- 啟動一個 Ubuntu 容器並進入其終端,允許用戶直接執行命令。
9. 自定義網絡 (--network
)
可以指定容器所屬的網絡。
- 將容器連接到名為
my-network
的自定義 Docker 網絡。
10. 臨時容器(自動刪除) (--rm
)
使用 --rm
選項讓容器在退出時自動刪除。
- 適用於執行短暫任務的容器。
常見場景應用
測試新映像:
- 使用
docker run
快速啟動容器測試映像功能。
- 使用
部署應用:
- 配合
-d
、-p
、-v
等選項快速部署 Web 服務、數據庫等應用。
- 配合
臨時任務:
- 使用
--rm
和-it
運行臨時容器進行測試或診斷。
- 使用
多容器協作:
- 與 Docker 網絡結合,使用
--network
將多個容器連接在一起,實現複雜應用部署。
使用案例
以下是一些常見的 docker run
使用案例,展示如何啟動容器並執行不同的操作。
1. 運行一個交互式的容器
啟動一個 Ubuntu 容器,並進入容器內的交互式 Shell 環境。
- 選項說明:
-i
:允許交互式輸入。-t
:分配一個虛擬終端。ubuntu
:要運行的映像名稱。
2. 在容器中執行一個命令
啟動一個 Alpine 容器,執行命令後自動退出。
- 結果:顯示 "Hello from Docker!",然後容器自動停止。
3. 後台運行容器
啟動一個 Nginx 容器並在後台運行。
- 選項說明:
-d
:以後台模式運行容器(detached mode)。nginx
:要運行的映像名稱。
4. 指定容器名稱
為容器指定一個自定義名稱。
- 結果:容器名稱為
my-nginx
,而不是 Docker 默認分配的隨機名稱。
5. 綁定主機端口
將主機的 8080 端口映射到容器的 80 端口。
- 選項說明:
-p 8080:80
:將主機的 8080 端口映射到容器的 80 端口。
- 結果:可通過瀏覽器訪問
http://localhost:8080
。
6. 掛載主機目錄到容器
將主機上的目錄掛載到容器內。
- 選項說明:
-v
:指定掛載的目錄(主機路徑:容器內路徑)。
- 應用場景:例如共享配置文件或數據。
7. 設置環境變量
為容器設置環境變量。
- 選項說明:
-e
:設置環境變量。
8. 限制資源使用
限制容器使用的 CPU 和內存資源。
- 選項說明:
--memory
:限制內存使用(如 512MB)。--cpus
:限制 CPU 使用數量(如 1 核心)。
9. 連接到指定的網絡
啟動容器並連接到指定的 Docker 網絡。
- 應用場景:適用於容器之間需要通信的場景。
10. 自動刪除容器
運行容器後自動刪除它。
- 選項說明:
--rm
:在容器退出後自動刪除。
範例:運行 MySQL 容器
啟動一個 MySQL 容器,並設置數據庫密碼。
- 選項說明:
--name
:為容器命名為my-mysql
。-e
:設置環境變量MYSQL_ROOT_PASSWORD
。mysql:5.7
:使用 MySQL 5.7 映像。
沒有留言:
張貼留言