Docker 17
引擎: CLI | Engine: CLI

docker create

docker create

描述

创建一个新容器

使用

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

备选方案

名字,简写默认描述
--add-host 添加自定义的主机到IP映射(主机:IP)
--attach, -a 附加到STDIN,STDOUT或STDERR
--blkio-weight 0阻止IO(相对权重),介于10和1000之间,或0禁用(默认值为0)
--blkio-weight-device 块IO重量(相对设备重量)
--cap-add 添加Linux功能
--cap-drop 删除Linux功能
--cgroup-parent 容器的可选父cgroup
--cidfile将容器ID写入文件
--cpu-count 0CPU数量(仅限Windows)
--cpu-percent 0CPU百分比(仅限Windows)
--cpu-period 0限制CPU CFS(完全公平调度程序)期间
--cpu-quota 0限制CPU CFS(完全公平调度程序)配额
--cpu-rt-period 0限制CPU实时周期(以微秒为单位)
--cpu-rt-runtime 0以微秒为单位限制CPU实时运行时间
--cpu-shares,-c0CPU份额(相对重量)
--cpusCPU数量
--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 真正跳过图像验证
--dns设置自定义DNS服务器
--dns-OPT设置DNS选项
--dns-option 设置DNS选项
--dns-search 设置自定义DNS搜索域
--entrypoint 覆盖图像的默认入口点
--env,-e设置环境变量
--env-file 读入环境变量文件
--expose 公开一个端口或一系列端口
--group-add 添加其他群组加入
--health-cmd 运行以检查运行状况的命令
--health-interval 0运行检查之间的时间(ms | s | m | h)(默认为0)
--health-retries 0需要报告不健康的连续失败
--health-start-period 0启动健康重试倒数前,容器初始化的开始时间段(ms | s | m | h)(默认为0)
--health-timeout 0允许一次检查运行的最长时间(ms | s | m | h)(默认值为0)
--help 打印用法
--hostname,-h容器主机名称
--init 在容器中运行一个转发信号并收集进程的init
--interactive, -i 即使没有连接,也要保持STDIN打开
--io-MaxBandwidth0系统驱动器的最大IO带宽限制(仅限Windows)
--io-maxiops0系统驱动器的最大IOps限制(仅限Windows)
--ipIPv4地址(例如172.30.100.104)
--ip6IPv6地址(例如,2001:db8 :: 33)
--ipcIPC命名空间使用
--isolation 容器隔离技术
--kernel-memory 0内核内存限制
--label, -l 在容器上设置元数据
--label-file 阅读标签的行分隔文件
--link 将链接添加到其他容器
--link-local-ip Container IPv4 / IPv6链路本地地址
--log-driver 记录容器的驱动程序
--log-OPT日志驱动选项
--mac-address 容器MAC地址(例如,92:d0:c6:0a:29:33)
--memory, -m 0内存限制
--memory-reservation 0内存软限制
--memory-swap 0交换限制等于内存加交换:'-1'以启用无限交换
--memory-swappiness-1调整容器内存swappiness(0到100)
--mount 将文件系统挂载附加到容器
--name为容器分配一个名称
--net 默认将容器连接到网络
--net-alias 为容器添加网络范围的别名
--network 默认将容器连接到网络
--network-alias 为容器添加网络范围的别名
--no-healthcheck 禁用任何容器指定的HEALTHCHECK
--oom-kill-disable 禁用OOM杀手
--oom-score-adj 0调整主机的OOM首选项(从-1000到1000)
--pid要使用的PID名称空间
--pids-limit 0调整容器匹配限制(无限制地设置-1)
--privileged 给这个容器赋予扩展权限
--publish,-p将容器的端口发布到主机
--publish-all,-P将所有暴露的端口发布到随机端口
--read-only 将容器的根文件系统挂载为只读
--restart 没有重新启动策略以在容器退出时应用
--rm 当容器退出时自动移除容器
--runtime 运行时用于此容器
--security-opt安全选项
--shm-size 0/ dev / shm的大小
--stop-signal SIGTERM停止容器的信号
--stop-timeout 0超时(以秒为单位)停止容器
--storage-opt 容器的存储驱动程序选项
--sysctl地图[]Sysctl选项
--tmpfs挂载一个tmpfs目录
--tty, -t 分配一个伪TTY
--ulimitUlimit选项
--user,-u用户名或UID(格式:<名称| uid>:<组| gid>)
--userns要使用的用户名称空间
--utsUTS命名空间使用
--volume, -v 绑定安装一个卷
--volume-driver 容器的可选卷驱动程序
--volumes-from 从指定容器装载卷
--workdir,-w容器内的工作目录

父命令

命令描述
docker Docker CLI的基本命令。

扩展描述

docker create命令在指定的映像上创建一个可写容器层,并为运行指定的命令做好准备。然后将容器ID打印到STDOUT。这与docker run -d容器永远不会启动的情况类似。然后您可以使用该docker start <container_id>命令随时启动容器。

当您希望提前设置容器配置以便在需要时启动它时,这非常有用。新容器的初始状态是created

请看运行命令部分和码头运行参考更多细节。

实例

创建并启动容器

$ docker create -t -i fedora bash 6d8af538ec541dd581ebc2a24153a28329acb5268abe5ef868c1f1a261221752 $ docker start -a -i 6d8af538ec5 bash-4.2#

初始化volume

从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存储驱动程序,大小选项仅在支持fs为xfs并使用pquota安装选项安装时可用。在这些条件下,用户可以通过任何小于支持fs大小的大小。

指定容器的隔离技术(隔离)

在Windows上运行Docker容器的情况下,此选项很有用。该--isolation=<value>选项设置容器的隔离技术。在Linux上,唯一支持的是default使用Linux命名空间的选项。在Microsoft Windows上,您可以指定这些值:

描述
默认使用Docker守护进程的--exec-opt指定的值。如果守护进程未指定隔离技术,则Microsoft将使用进程作为其默认值
守护进程在Windows服务器上运行,如果在Windows客户端上运行,则守护进程运行在hyperv上。
process 仅命名空间隔离。
Hyper-V基于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 命令中