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 | 0 | CPU数量(仅限Windows) |
--cpu-percent | 0 | CPU百分比(仅限Windows) |
--cpu-period | 0 | 限制CPU CFS(完全公平调度程序)期间 |
--cpu-quota | 0 | 限制CPU CFS(完全公平调度程序)配额 |
--cpu-rt-period | 0 | 限制CPU实时周期(以微秒为单位) |
--cpu-rt-runtime | 0 | 以微秒为单位限制CPU实时运行时间 |
--cpu-shares,-c | 0 | CPU份额(相对重量) |
--cpus | | 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 | 真正 | 跳过图像验证 |
--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-MaxBandwidth | 0 | 系统驱动器的最大IO带宽限制(仅限Windows) |
--io-maxiops | 0 | 系统驱动器的最大IOps限制(仅限Windows) |
--ip | | IPv4地址(例如172.30.100.104) |
--ip6 | | IPv6地址(例如,2001:db8 :: 33) |
--ipc | | IPC命名空间使用 |
--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 |
--ulimit | | Ulimit选项 |
--user,-u | | 用户名或UID(格式:<名称| uid>:<组| gid>) |
--userns | | 要使用的用户名称空间 |
--uts | | UTS命名空间使用 |
--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
也是)。例如,这可以让你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
存储驱动程序,大小选项仅在支持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 命令中