©
本文档使用
php.cn手册 发布
创建一个新容器
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#
从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 8drwxr-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 20drwxr-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"
相同。
在创建时分配可用于容器的设备。分配的设备都将被添加到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 命令中