docker container create
描述 | 建立一個新容器 |
---|---|
用法 | docker container create [OPTIONS] IMAGE [COMMAND] [ARG...] |
別名 | docker create |
描述
docker container create
(或簡稱:docker create
)命令從指定的映象建立一個新容器,但不啟動它。
建立容器時,Docker 守護程序會在指定的映象之上建立一個可寫容器層,並準備好執行指定的命令。然後容器 ID 會列印到 STDOUT
。這類似於 docker run -d
,但容器永遠不會啟動。然後您可以使用 docker container start
(或簡稱:docker start
)命令隨時啟動容器。
當您希望提前設定容器配置,使其在需要時可以啟動時,此功能非常有用。新容器的初始狀態為 created
。
docker create
命令的大多數選項與 docker run
命令(它在啟動前執行 docker create
)共享。有關可用標誌和選項的詳細資訊,請參閱 docker run
CLI 參考。
選項
選項 | 預設值 | 描述 |
---|---|---|
--add-host | 新增自定義主機到 IP 對映 (host:ip) | |
--annotation | API 1.43+ 為容器添加註解(傳遞給 OCI 執行時) | |
-a, --attach | 附加到 STDIN、STDOUT 或 STDERR | |
--blkio-weight | 塊 IO(相對權重),介於 10 和 1000 之間,或 0 停用(預設 0) | |
--blkio-weight-device | 塊 IO 權重(相對裝置權重) | |
--cap-add | 新增 Linux 能力 | |
--cap-drop | 刪除 Linux 能力 | |
--cgroup-parent | 容器的可選父 cgroup | |
--cgroupns | API 1.41+ 要使用的 Cgroup 名稱空間(host|private) 'host':在 Docker 主機的 cgroup 名稱空間中執行容器 'private':在自己的私有 cgroup 名稱空間中執行容器 '':使用守護程序上 default-cgroupns-mode 選項配置的 cgroup 名稱空間(預設) default-cgroupns-mode 選項作為守護程序(預設) | |
--cidfile | 將容器 ID 寫入檔案 | |
--cpu-count | CPU 計數(僅限 Windows) | |
--cpu-percent | CPU 百分比(僅限 Windows) | |
--cpu-period | 限制 CPU CFS(完全公平排程器)週期 | |
--cpu-quota | 限制 CPU CFS(完全公平排程器)配額 | |
--cpu-rt-period | API 1.25+ 限制 CPU 即時週期(微秒) | |
--cpu-rt-runtime | API 1.25+ 限制 CPU 即時執行時間(微秒) | |
-c, --cpu-shares | CPU 共享(相對權重) | |
--cpus | API 1.25+ CPU 數量 | |
--cpuset-cpus | 允許執行的 CPU (0-3, 0,1) | |
--cpuset-mems | 允許執行的記憶體(0-3,0,1) | |
--device | 向容器新增主機裝置 | |
--device-cgroup-rule | 向 cgroup 允許裝置列表新增規則 | |
--device-read-bps | 限制從裝置讀取速率(每秒位元組數) | |
--device-read-iops | 限制從裝置讀取速率(每秒 IO 數) | |
--device-write-bps | 限制寫入裝置的速率(每秒位元組數) | |
--device-write-iops | 限制寫入裝置的速率(每秒 IO 數) | |
--disable-content-trust | true | 跳過映象驗證 |
--dns | 設定自定義 DNS 伺服器 | |
--dns-option | 設定 DNS 選項 | |
--dns-search | 設定自定義 DNS 搜尋域 | |
--domainname | 容器 NIS 域名 | |
--entrypoint | 覆蓋映象的預設 ENTRYPOINT | |
-e, --env | 設定環境變數 | |
--env-file | 從檔案讀取環境變數 | |
--expose | 公開埠或埠範圍 | |
--gpus | API 1.40+ 要新增到容器的 GPU 裝置('all' 表示傳遞所有 GPU) | |
--group-add | 新增要加入的額外組 | |
--health-cmd | 執行以檢查健康的命令 | |
--health-interval | 執行檢查之間的時間間隔 (ms|s|m|h) (預設 0s) | |
--health-retries | 報告不健康狀態所需的連續失敗次數 | |
--health-start-interval | API 1.44+ 在啟動期間執行檢查之間的時間間隔 (ms|s|m|h) (預設 0s) | |
--health-start-period | API 1.29+ 容器在開始健康重試倒計時之前初始化的啟動週期 (ms|s|m|h) (預設 0s) | |
--health-timeout | 允許一次檢查執行的最長時間 (ms|s|m|h) (預設 0s) | |
--help | 列印用法 | |
-h, --hostname | 容器主機名 | |
--init | API 1.25+ 在容器內部執行一個 init 程序,用於轉發訊號並回收程序 | |
-i, --interactive | 即使未連線也保持 STDIN 開啟 | |
--io-maxbandwidth | 系統驅動器的最大 IO 頻寬限制(僅限 Windows) | |
--io-maxiops | 系統驅動器的最大 IOps 限制(僅限 Windows) | |
--ip | IPv4 地址(例如,172.30.100.104) | |
--ip6 | IPv6 地址(例如,2001:db8::33) | |
--ipc | 要使用的 IPC 模式 | |
--isolation | 容器隔離技術 | |
--kernel-memory | 核心記憶體限制 | |
-l, --label | 在容器上設定元資料 | |
--label-file | 讀取行分隔的標籤檔案 | |
--link | 連結到另一個容器 | |
--link-local-ip | 容器 IPv4/IPv6 鏈路本地地址 | |
--log-driver | 容器的日誌驅動程式 | |
--log-opt | 日誌驅動程式選項 | |
--mac-address | 容器 MAC 地址(例如,92:d0:c6:0a:29:33) | |
-m, --memory | 記憶體限制 | |
--memory-reservation | 記憶體軟限制 | |
--memory-swap | 交換限制等於記憶體加交換空間:'-1' 表示啟用無限制交換 | |
--memory-swappiness | -1 | 調整容器記憶體交換性(0 到 100) |
--mount | 將檔案系統掛載附加到容器 | |
--name | 為容器分配一個名稱 | |
--network | 將容器連線到網路 | |
--network-alias | 為容器新增網路範圍別名 | |
--no-healthcheck | 停用任何容器指定的 HEALTHCHECK | |
--oom-kill-disable | 停用 OOM Killer | |
--oom-score-adj | 調整主機的 OOM 偏好設定(-1000 到 1000) | |
--pid | 要使用的 PID 名稱空間 | |
--pids-limit | 調整容器 pids 限制(設定為 -1 表示無限制) | |
--platform | API 1.32+ 如果伺服器支援多平臺,則設定平臺 | |
--privileged | 為此容器授予擴充套件許可權 | |
-p, --publish | 將容器的埠釋出到主機 | |
-P, --publish-all | 將所有暴露的埠釋出到隨機埠 | |
--pull | 丟失 | 建立前拉取映象(`always`、`|missing`、`never`) |
-q, --quiet | 抑制拉取輸出 | |
--read-only | 將容器的根檔案系統掛載為只讀 | |
--restart | no | 容器退出時應用的重啟策略 |
--rm | 容器退出時自動刪除容器及其關聯的匿名卷 | |
--runtime | 用於此容器的執行時 | |
--security-opt | 安全選項 | |
--shm-size | /dev/shm 的大小 | |
--stop-signal | 停止容器的訊號 | |
--stop-timeout | API 1.25+ 停止容器的超時時間(秒) | |
--storage-opt | 容器的儲存驅動程式選項 | |
--sysctl | Sysctl 選項 | |
--tmpfs | 掛載 tmpfs 目錄 | |
-t, --tty | 分配一個偽 TTY | |
--ulimit | Ulimit 選項 | |
--use-api-socket | 實驗性 (CLI) 繫結掛載 Docker API 套接字和所需的身份驗證 | |
-u, --user | 使用者名稱或 UID (格式: <name|uid>[:<group|gid>]) | |
--userns | 要使用的使用者名稱空間 | |
--uts | 要使用的 UTS 名稱空間 | |
-v, --volume | 繫結掛載一個卷 | |
--volume-driver | 容器的可選卷驅動程式 | |
--volumes-from | 從指定的容器掛載卷 | |
-w, --workdir | 容器內的工作目錄 |
示例
建立並啟動容器
以下示例建立了一個附加偽 TTY 的互動式容器,然後啟動容器並附加到它
$ docker container create -i -t --name mycontainer alpine
6d8af538ec541dd581ebc2a24153a28329acb5268abe5ef868c1f1a261221752
$ docker container start --attach -i mycontainer
/ # echo hello world
hello world
上述操作等同於 docker run
$ docker run -it --name mycontainer2 alpine
/ # echo hello world
hello world
初始化卷
容器卷在 docker create
階段(即 docker run
也如此)初始化。例如,這允許您 create
data
卷容器,然後從另一個容器中使用它
$ docker create -v /data --name data ubuntu
240633dfbb98128fa77473d3d9018f6123b99c454b3251427ae190a7d951ad57
$ docker run --rm --volumes-from data ubuntu ls -la /data
total 8
drwxr-xr-x 2 root root 4096 Dec 5 04:10 .
drwxr-xr-x 48 root root 4096 Dec 5 04:11 ..
同樣,create
一個主機目錄繫結掛載卷容器,然後可以從後續容器中使用它
$ docker create -v /home/docker:/docker --name docker ubuntu
9aa88c08f319cd1e4515c3c46b0de7cc9aa75e878357b1e96f91e2c773029f03
$ docker run --rm --volumes-from docker ubuntu ls -la /docker
total 20
drwxr-sr-x 5 1000 staff 180 Dec 5 04:00 .
drwxr-xr-x 48 root root 4096 Dec 5 04:13 ..
-rw-rw-r-- 1 1000 staff 3833 Dec 5 04:01 .ash_history
-rw-r--r-- 1 1000 staff 446 Nov 28 11:51 .ashrc
-rw-r--r-- 1 1000 staff 25 Dec 5 04:00 .gitconfig
drwxr-sr-x 3 1000 staff 60 Dec 1 03:28 .local
-rw-r--r-- 1 1000 staff 920 Nov 28 11:51 .profile
drwx--S--- 2 1000 staff 460 Dec 5 00:51 .ssh
drwxr-xr-x 32 1000 staff 1140 Dec 5 04:01 docker