Docker Run vs Docker Create:創建和管理容器的差異
Docker是一種流行的容器化平臺,它提供了多種命令來創建和管理容器。其中兩個常用的命令是"docker run"和"docker create"。雖然它們都用于創建容器,但在用法和功能上有一些區別。讓我們來看看它們之間的差異。
docker create
docker create可以創建一個新的容器,但是這個容器不會被啟動,語法如下:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
options 說明:
option作用–name指定容器的名字
使用示例
根據 MySQL 鏡像,創建一個hogwarts_mysql容器
docker create --name=hogwarts_mysql mysql
注:如果我們要啟動該容器,我們可以使用docker start命令來啟動該容器
這種分離的創建和啟動過程可以為我們提供更多的靈活性和控制權,因為我們可以在容器創建后,根據需要對其進行更改或配置。
docker run
docker run可以創建并運行一個新的容器,語法如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
注: 跟 docker create 一樣的語法格式,只不過可以運行容器甚至進入容器內部
COMMAND :需要在容器內執行的命令
執行流程
- 首先在指定鏡像上創建一個可寫的容器層
- 然后使用指定的命令(COMMAND)啟動它
- docker run 相當于執行了兩個 操作:/contAIners/create、/containers/(id)/start
常用options參數
option作用-i以交互模式運行容器,通常與 -t 同時使用-t啟動容器后,為容器分配一個命令行,通常與 -i 同時使用-v目錄映射,容器目錄掛載到宿主機目錄,格式: <host目錄>:<容器目錄>-d守護進程,后臺運行該容器-p指定端口映射,格式:主機(宿主)端口:容器端口-P隨機端口映射,容器內部端口隨機映射到主機的端口-u以什么用戶身份創建容器–name “Nginx-lb”容器名字-m, --memory bytes設置容器使用內存最大值-h, --hostname string指定容器的 host name–DNS 8.8.8.8指定容器 dns 服務器-e username=“ritchie”設置環境變量–restart Docker 重啟后,容器是否自動重啟–privileged容器內是否使用真正的 root 權限
-p 的寫法
docker run -p ip:主機端口:容器端口
docker run -p 主機端口:容器端口 (常用)
docker run -p 容器端口
使用示例:
docker run --name muller_mysql mysql
總結
"docker run"命令用于創建并啟動一個新的容器,而"docker create"命令僅用于創建容器,而不會自動啟動它。使用"docker create"可以在容器創建后對其進行更多的配置或修改,然后使用"docker start"來手動啟動容器。