码头工人创建

描述

创建一个新的容器

用法

$ 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也是如此)。例如,这可以让你createdata 体积的容器中,然后用它从另一个容器:

$ 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。此选项仅适用于devicemapperbtrfsoverlay2windowsfilterzfs图形驱动程序。对于devicemapperbtrfswindowsfilterzfs图形驱动程序,用户无法通过的尺寸小于默认尺寸BaseFS。对于overlay2存储驱动程序,只有在支持fsxfs并通过pquotamount选项进行安装的情况下,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的基本命令。