码头工人创建
描述
创建一个新的容器
用法
$ docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
扩展说明
该docker create
命令在指定的映像上创建一个可写的容器层,并为运行指定的命令做好准备。然后将容器ID打印到STDOUT
。这与docker run -d
从未启动容器的情况相似。然后,您可以随时使用
docker start <container_id>
命令启动容器。
当您想提前设置容器配置以便可以在需要时启动时,此功能很有用。新容器的初始状态为created
。
请参阅运行命令部分和Docker运行参考以获取更多详细信息。
有关此命令的示例用法,请参阅下面的示例部分。
选项
名称,简写 | 默认 | 描述 |
--add-host |
添加自定义主机到IP的映射(host:ip) | |
--attach , -a |
附加到STDIN,STDOUT或STDERR | |
--blkio-weight |
块IO(相对权重),介于10到1000之间,或者为0禁用(默认为0) | |
--blkio-weight-device |
块IO重量(相对设备重量) | |
--cap-add |
添加Linux功能 | |
--cap-drop |
放弃Linux功能 | |
--cgroup-parent |
容器的可选父cgroup | |
--cgroupns |
要使用(host | private)'host'的API 1.41+ Cgroup命名空间:在Docker主机的cgroup命名空间'private'中运行容器:在其自己的私有cgroup命名空间中运行容器'':使用默认配置的cgroup命名空间守护程序上的-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实时运行时间(以微秒为单位) |
|
--cpu-shares , -c |
CPU份额(相对重量) | |
--cpus |
API 1.25+ CPU数量 |
|
--cpuset-cpus |
允许执行的CPU(0-3,0,1) | |
--cpuset-mems |
允许执行的MEM(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-opt |
设定DNS选项 | |
--dns-option |
设定DNS选项 | |
--dns-search |
设置自定义DNS搜索域 | |
--domainname |
容器NIS域名 | |
--entrypoint |
覆盖图像的默认ENTRYPOINT | |
--env , -e |
设置环境变量 | |
--env-file |
读入环境变量文件 | |
--expose |
公开一个或多个端口 | |
--gpus |
API 1.40+ GPU设备添加到容器中(“全部”传递所有GPU) |
|
--group-add |
添加其他群组即可加入 | |
--health-cmd |
运行命令以检查运行状况 | |
--health-interval |
运行检查之间的时间(ms | s | m | h)(默认为0s) | |
--health-retries |
连续出现故障需要报告不健康 | |
--health-start-period |
API 1.29+ 容器在开始运行状况重试倒计时(ms | s | m | h)之前初始化的起始时间(默认为0s) |
|
--health-timeout |
允许执行一次检查的最长时间(ms | s | m | h)(默认为0s) | |
--help |
打印用量 | |
--hostname , -h |
容器主机名 | |
--init |
API 1.25+ 在容器内运行一个初始化程序,以转发信号并获取进程 |
|
--interactive , -i |
即使未连接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 |
内核内存限制 | |
--label , -l |
在容器上设置元数据 | |
--label-file |
读入行分隔的标签文件 | |
--link |
将链接添加到另一个容器 | |
--link-local-ip |
容器IPv4 / IPv6链接本地地址 | |
--log-driver |
容器的日志记录驱动程序 | |
--log-opt |
日志驱动程序选项 | |
--mac-address |
容器MAC地址(例如92:d0:c6:0a:29:33) | |
--memory , -m |
内存限制 | |
--memory-reservation |
内存软限制 | |
--memory-swap |
交换限制等于内存加交换:“-1”以启用无限交换 | |
--memory-swappiness |
-1 |
调音容器内存交换(0到100) |
--mount |
将文件系统挂载附加到容器 | |
--name |
为容器分配一个名称 | |
--net |
将容器连接到网络 | |
--net-alias |
为容器添加网络范围的别名 | |
--network |
将容器连接到网络 | |
--network-alias |
为容器添加网络范围的别名 | |
--no-healthcheck |
禁用任何容器指定的健康检查 | |
--oom-kill-disable |
禁用OOM杀手 | |
--oom-score-adj |
调台主持人的OOM首选项(-1000到1000) | |
--pid |
使用的PID名称空间 | |
--pids-limit |
调音容器pids限制(将-1设置为无限制) | |
--platform |
API 1.32+ 设置平台(如果服务器具有多平台功能) |
|
--privileged |
赋予此容器扩展的特权 | |
--publish , -p |
将容器的端口发布到主机 | |
--publish-all , -P |
将所有公开的端口发布到随机端口 | |
--pull |
missing |
在创建之前拉出图像(“总是” |“缺少” |“从不”) |
--read-only |
将容器的根文件系统挂载为只读 | |
--restart |
no |
容器退出时重新启动策略以应用 |
--rm |
退出时自动删除容器 | |
--runtime |
用于此容器的运行时 | |
--security-opt |
安全选项 | |
--shm-size |
/ dev / shm的大小 | |
--stop-signal |
SIGTERM |
停止容器的信号 |
--stop-timeout |
API 1.25+ 超时(以秒为单位)以停止容器 |
|
--storage-opt |
容器的存储驱动程序选项 | |
--sysctl |
Sysctl选项 | |
--tmpfs |
挂载tmpfs目录 | |
--tty , -t |
分配伪TTY | |
--ulimit |
Ulimit选项 | |
--user , -u |
用户名或UID(格式:<名称| uid> [:<组| gid>]) | |
--userns |
要使用的用户名称空间 | |
--uts |
要使用的UTS命名空间 | |
--volume , -v |
绑定挂载卷 | |
--volume-driver |
容器的可选音量驱动器 | |
--volumes-from |
从指定的容器挂载卷 | |
--workdir , -w |
容器内的工作目录 |
例子
创建并启动一个容器
$ docker create -t -i fedora bash
6d8af538ec541dd581ebc2a24153a28329acb5268abe5ef868c1f1a261221752
$ docker start -a -i 6d8af538ec5
bash-4.2#
初始化卷
从v1.4.0版本开始,容器卷在该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
设置每个容器的存储驱动程序选项。
$ docker create -it --storage-opt size=120G fedora /bin/bash
此(大小)将允许在创建时将容器rootfs大小设置为120G。此选项仅适用于devicemapper
,btrfs
,overlay2
,
windowsfilter
和zfs
图形驱动程序。对于devicemapper
,btrfs
,windowsfilter
和zfs
图形驱动程序,用户无法通过的尺寸小于默认尺寸BaseFS。对于overlay2
存储驱动程序,只有在支持fsxfs
并通过pquota
mount选项进行安装的情况下,size选项才可用。在这种情况下,用户可以传递小于背衬fs尺寸的任何尺寸。
指定容器的隔离技术(-隔离)
在Windows上运行Docker容器的情况下,此选项很有用。该--isolation=<value>
选项设置了容器的隔离技术。在Linux上,唯一受支持的default
选项是使用Linux名称空间的选项。在Microsoft Windows上,您可以指定以下值:
价值 | 描述 |
---|---|
default |
使用Docker守护程序的指定的值--exec-opt 。如果daemon 未指定隔离技术,则Microsoft Windows将process 默认值用作默认值。 |
守护程序正在Windows服务器上运行,或者hyperv 在Windows客户端上运行。 |
|
process |
仅命名空间隔离。 |
hyperv |
Hyper-V虚拟机管理程序基于分区的隔离。 |
指定--isolation
不带值的标志与设置相同--isolation="default"
。
处理动态创建的设备(--device-cgroup-rule)
容器可用的设备在创建时分配。一旦运行,分配的设备都将添加到cgroup.allow文件中并创建到容器中。当需要将新设备添加到正在运行的容器时,这会带来问题。
解决方案之一是向容器添加更宽松的规则,以允许其访问更广泛的设备。例如,假设我们的容器需要访问具有大号42
和任意个小号的字符设备(随着新设备的出现而添加),则将添加以下规则:
docker create --device-cgroup-rule='c 42:* rmw' -name my-container my-image
然后,用户可以要求udev
执行docker exec my-container mknod newDevX c 42 <minor>
添加所需设备所需的脚本。
注意:最初存在的设备仍需要显式添加到create / run命令中
上级命令
命令 | 描述 |
---|---|
码头工人 | Docker CLI的基本命令。 |