create
用法:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
功能:使用image创建一个新的容器,并将返回一个容器的ID,创建之后的容器用docker start命令启动,OPTIONS用于创建容器时对容器进行配置,有些选项将覆盖image中对容器的配置,COMMAND指定容器启动时执行的命令。
选项:
表 1 参数说明
参数
|
参数含义
|
-a —attach=[]
|
使控制台Attach到容器内进程的STDIN,STDOUT,STDERR
|
—name=””
|
指定容器的名字
|
—add-host=[host:ip]
|
在容器内的/etc/hosts中添加一个hostname到IP地址的映射
e.g. —add-host=test:10.10.10.10
|
—annotation
|
设置容器的annotations。例如支持native.umask选项:
- —annotation native.umask=normal # 启动的容器umask值为0022
- —annotation native.umask=secure # 启动的容器umask值为0027
注意如果没有配置该参数,则使用dockerd中的umask配置。
|
—blkio-weight
|
blockio的相对权重,从10到1000
|
—blkio-weight-device=[]
|
blockio权重(设置相对权重)
|
-c, —cpu-shares=0
|
容器获得主机CPU的相对权重,通过设置这个选项获得更高的优先级,默认所有的容器都是获得相同的CPU优先权。
|
—cap-add=[]
|
添加Linux权能
|
—cap-drop=[]
|
清除Linux权能
|
—cgroup-parent
|
为容器设置cgroup父目录
|
—cidfile=””
|
将容器的ID写到指定的文件中
e.g. —cidfile=/home/cidfile-test 将该容器的ID写入到/home/cidfile-test中
|
—cpu-period
|
设置CFS(完全公平调度策略)进程的CPU周期。
默认值为100ms;一般—cpu-period参数和—cpu-quota是配合使用的,比如—cpu-period=50000 —cpu-quota=25000,意味着如果有1个CPU,该容器可以每50ms获取到50%的CPU。
使用—cpus=0.5也可达到同样的效果
|
—cpu-quota
|
设置CFS(完全公平调度策略)进程的CPU配额,默认为0,即没有限制
|
—cpuset-cpus
|
设置容器中进程允许运行的CPU (0-3, 0,1)。默认没有限制
|
—cpuset-mems
|
设置容器中进程运行运行的内存内存节点 (0-3, 0,1),只对NUMA系统起作用
|
—device=[]
|
将主机的设备添加到容器中 (e.g. —device=/dev/sdc:/dev/xvdc:rwm)
|
—dns=[]
|
强制容器使用指定的dns服务器(e.g. 创建容器时指定—dns=114.114.xxx.xxx,将在容器的/etc/resolv.conf中写入nameserver 114.114.xxx.xxx并将覆盖原来的内容)
|
—dns-opt=[]
|
设置DNS选项
|
—dns-search=[]
|
强制容器使用指定的dns搜索域名
|
-e, —env=[]
|
设置容器的环境变量
—env=[KERNEL_MODULES=]:
在容器中插入指定模块。目前仅支持Host主机上有的模块,且容器删除后Host主机上模块仍然驻留,且容器需要同时指定—hook-spec选项。以下都是参数的合法格式:
KERNEL_MODULERS=
KERNEL_MODULERS=a
KERNEL_MODULERS=a,b
KERNEL_MODULERS=a,b,
|
—entrypoint=””
|
覆盖image中原有的entrypoint,entrypoint设置容器启动时执行的命令
|
—env-file=[]
|
从一个文件中读取环境变量,多个环境变量在文件中按行分割(e.g. —env-file=/home/test/env,其中env文件中存放了多个环境变量)
|
—expose=[]
|
开放一个容器内部的端口,使用下文介绍的-P选项将会使开放的端口映射到主机的一个端口。
|
—group-add=[]
|
指定容器添加到额外的组
|
-h, —hostname=””
|
设置容器主机名
|
—health-cmd
|
设置容器健康检查执行的命令
|
—health-interval
|
相邻两次命令执行的间隔时间,默认 30s
|
—health-timeout
|
单次检查命令执行的时间上限,超时则任务命令执行失败,默认30s
|
—health-start-period
|
容器启动距离第一次执行健康检查开始的时间,默认0s
|
—health-retries
|
健康检查失败最大的重试次数,默认3
|
—health-exit-on-unhealthy
|
容器被检查为非健康后停止容器,默认false
|
—host-channel=[]
|
设置一个通道供容器内进程与主机进行通信,格式:<host path>:<container path>:<rw/ro>:<size limit>
|
-i, —interactive=false
|
设置STDIN打开即使没有attached
|
—ip
|
设置容器的IPv4地址
|
—ip6
|
设置容器的IPv6地址
|
—ipc
|
指定容器的ipc命名空间
|
—isolation
|
指定容器隔离策略
|
-l, —label=[]
|
设置容器的标签
|
—label-file=[]
|
从文件中获取标签
|
—link=[]
|
链接到其他容器,这个选项将在容器中添加一些被链接容器IP地址和端口的环境变量及在/etc/hosts中添加一条映射(e.g. —link=name:alias)
|
—log-driver
|
设置容器的日志驱动
|
—log-opt=[]
|
设置日志驱动选项
|
-m, —memory=””
|
设置容器的内存限制,格式<number><optional unit>, 其中 unit = b, k, m or g。该参数最小值为4m。
|
—mac-address
|
设置容器的mac地址 (e.g. 92:d0:c6:0a:xx:xx)
|
—memory-reservation
|
设置容器内存限制,默认与—memory一致。可认为—memory是硬限制,—memory-reservation是软限制;当使用内存超过预设值时,会动态调整(系统回收内存时尝试将使用内存降低到预设值以下),但不确保一定不超过预设值。一般可以和—memory一起使用,数值小于—memory的预设值。
|
—memory-swap
|
设置普通内存和交换分区的使用总量,-1为不做限制。如果不设置,则为—memory值的2倍,即SWAP可再使用与—memory相同的内存量。
|
—memory-swappiness=-1
|
设置容器使用交换内存的时机,以剩余内存百分比为度量(0-100)
|
—net=”bridge”
|
设置容器的网络模式,当前1.3.0版本的docker有四个模式:bridge、host、none、container:<name|id>。默认使用的是bridge。
- bridge:使用桥接模式在docker daemon启动时使用的网桥上创建一个网络栈。
- host:在容器内使用主机的网络栈
- none:不使用网络
- container:<name|id>:重复利用另外一个容器的网络栈
|
—no-healthcheck
|
设置容器不使用健康检查
|
—oom-kill-disable
|
禁用OOM killer,建议如果不设置-m参数,也不要设置此参数。
|
—oom-score-adj
|
调整容器的oom规则(-1000到1000)
|
-P, —publish-all=false
|
将容器开放的所有端口一一映射到主机的端口,通过主机的端口可以访问容器内部,通过下文介绍的docker port命令可以查看具体容器端口和主机端口具体的映射关系。
|
-p, —publish=[]
|
将容器内的一个端口映射到主机的一个端口,format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort,如果没有指定IP代表侦听主机所有网卡的访问,如果没有指定hostPort,表示自动分配主机的端口。
|
—pid
|
设置容器的PID命名空间
|
—privileged=false
|
给予容器额外的权限,当使用了—privileged选项,容器将可以访问主机的所有设备。
|
—restart=””
|
设置容器退出时候的重启规则,当前1.3.1版本支持3个规则:
- no:当容器停止时,不重启。
- on-failure:当容器退出码为非0时重启容器,这个规则可以附加最大重启次数,如on-failure:5,最多重启5次。
- always:无论退出码是什么都退出。
|
—read-only
|
将容器的根文件系统以只读的形式挂载
|
—security-opt=[]
|
容器安全规则
|
—shm-size
|
/dev/shm设备的大小,默认值是64M
|
—stop-signal=SIGTERM
|
容器停止信号,默认为SIGTERM
|
-t, —tty=false
|
分配一个伪终端
|
—tmpfs=[]
|
挂载tmpfs目录
|
-u, —user=””
|
指定用户名或者用户ID
|
—ulimit=[]
|
ulimit选项
|
—userns
|
指定容器的user命名空间
|
-v, —volume=[]
|
将主机的一个目录挂载到容器内部,或者在容器中创建一个新卷(e.g. -v /home/test:/home将主机的/home/test目录挂载到容器的/home目录下,-v /tmp 在容器中的根目录下创建tmp文件夹,该文件夹可以被其他容器用—volumes-from选项共享 )。不支持将主机目录挂载到容器/proc子目录,否则启动容器会报错。
|
—volume-driver
|
设置容器的数据卷驱动,可选。
|
—volumes-from=[]
|
将另外一个容器的卷挂载到本容器中,实现卷的共享(e.g. -volumes-from container_name将container_name中的卷挂载到这个容器中 )。-v和—volumes-from=[]是两个非常重要的选项用于数据的备份和热迁移。
|
-w, —workdir=””
|
指定容器的工作目录,进入容器时的目录
|
示例:
创建了一个名为ubuntu的容器,创建之后的容器用docker start命令启动。
$ sudo docker create -ti --name=ubuntu ubuntu /bin/bash