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)
--annotationAPI 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
--cgroupnsAPI 1.41+ 要使用的 Cgroup 名稱空間(host|private)
'host':在 Docker 主機的 cgroup 名稱空間中執行容器
'private':在自己的私有 cgroup 名稱空間中執行容器
'':使用守護程序上 default-cgroupns-mode 選項配置的 cgroup 名稱空間(預設)
default-cgroupns-mode 選項作為守護程序(預設)
--cidfile將容器 ID 寫入檔案
--cpu-countCPU 計數(僅限 Windows)
--cpu-percentCPU 百分比(僅限 Windows)
--cpu-period限制 CPU CFS(完全公平排程器)週期
--cpu-quota限制 CPU CFS(完全公平排程器)配額
--cpu-rt-periodAPI 1.25+ 限制 CPU 即時週期(微秒)
--cpu-rt-runtimeAPI 1.25+ 限制 CPU 即時執行時間(微秒)
-c, --cpu-sharesCPU 共享(相對權重)
--cpusAPI 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-trusttrue跳過映象驗證
--dns設定自定義 DNS 伺服器
--dns-option設定 DNS 選項
--dns-search設定自定義 DNS 搜尋域
--domainname容器 NIS 域名
--entrypoint覆蓋映象的預設 ENTRYPOINT
-e, --env設定環境變數
--env-file從檔案讀取環境變數
--expose公開埠或埠範圍
--gpusAPI 1.40+ 要新增到容器的 GPU 裝置('all' 表示傳遞所有 GPU)
--group-add新增要加入的額外組
--health-cmd執行以檢查健康的命令
--health-interval執行檢查之間的時間間隔 (ms|s|m|h) (預設 0s)
--health-retries報告不健康狀態所需的連續失敗次數
--health-start-intervalAPI 1.44+ 在啟動期間執行檢查之間的時間間隔 (ms|s|m|h) (預設 0s)
--health-start-periodAPI 1.29+ 容器在開始健康重試倒計時之前初始化的啟動週期 (ms|s|m|h) (預設 0s)
--health-timeout允許一次檢查執行的最長時間 (ms|s|m|h) (預設 0s)
--help列印用法
-h, --hostname容器主機名
--initAPI 1.25+ 在容器內部執行一個 init 程序,用於轉發訊號並回收程序
-i, --interactive即使未連線也保持 STDIN 開啟
--io-maxbandwidth系統驅動器的最大 IO 頻寬限制(僅限 Windows)
--io-maxiops系統驅動器的最大 IOps 限制(僅限 Windows)
--ipIPv4 地址(例如,172.30.100.104)
--ip6IPv6 地址(例如,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 表示無限制)
--platformAPI 1.32+ 如果伺服器支援多平臺,則設定平臺
--privileged為此容器授予擴充套件許可權
-p, --publish將容器的埠釋出到主機
-P, --publish-all將所有暴露的埠釋出到隨機埠
--pull丟失建立前拉取映象(`always`、`|missing`、`never`)
-q, --quiet抑制拉取輸出
--read-only將容器的根檔案系統掛載為只讀
--restartno容器退出時應用的重啟策略
--rm容器退出時自動刪除容器及其關聯的匿名卷
--runtime用於此容器的執行時
--security-opt安全選項
--shm-size/dev/shm 的大小
--stop-signal停止容器的訊號
--stop-timeoutAPI 1.25+ 停止容器的超時時間(秒)
--storage-opt容器的儲存驅動程式選項
--sysctlSysctl 選項
--tmpfs掛載 tmpfs 目錄
-t, --tty分配一個偽 TTY
--ulimitUlimit 選項
--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