docker run详细解答
root@i-uf68xge6r3ivl:~# docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
Options:
--add-host list 动态添加一条映射到/etc/hosts文件中
-a, --attach list Attach to STDIN, STDOUT or STDERR
--blkio-weight uint16 限制容器读写权重,权重值在10~1000之间,0为关闭权重
(该参数默认为0)默认,所有的容器对于 IO 操作都拥有相同优先级。
--blkio-weight-device list 设置设备的权重,权重值在10~1000之间,且优先级高于
blkio.weigh (docker run --blkio-weight-device "/dev/sda:100" )
--cap-add list 添加权限 http://linux.die.net/man/7/capabilities
(在docker容器内限制了大部分的linux权限,在之前,需要开启这些功能需要结
合--privileged开启特权模式才能使用这些参数,考虑到安全性,可以通过该参
数来开启指定的linux功能,若参数为all则默认开启所有linux权限)
--cap-drop list 删除权限 http://linux.die.net/man/7/capabilities
--cgroup-parent string 配置容器的控制组,继承该控制组的资源限制模式
--cidfile string 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
(若该文件存在,则会返回一个错误)
--cpu-period int 与参数--cpu-quota配合使用,设定cpu从新分配资源的时间周期,
时间周期结束后,会对cpu进行重新分配。
--cpu-quota int 与参数--cpu-period配合使用,设定容器在资源分配周期内占用cpu的
时间,若容器设定--cpu-quota=1000000 --cpu-period=500000,则该容器
在这个时间周期内权重为50%,容器的权重比,用来解决宿主机内若干容器的资
源抢占导致重要容器cpu性能不足的场景(Linux 的CFS模式)
--cpu-rt-period int 限制 cpu-period量级微妙
--cpu-rt-runtime int 在一个cpu资源分配周期内,优先保证某容器的cpu使用的最大微秒
数。例如,默认周期为 1000000 微秒(1秒),设置 --cpu-rt-
runtime=800000 可确保使用实时调度程序的容器每 1000000 微秒可运行
800000 微秒,并保留至少 200000 微秒用于非实时任务
-c, --cpu-shares int 设置容器CPU权重,在CPU共享场景使用
--cpus decimal 设置容器使用cpu的数量,该参数为1.3新增参数用于快速设置容器对于cpu的占用
--cpuset-cpus string 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--cpuset-mems string 同参数--cpuset-cpus,但该参数是作用于NUMA 架构的 CPU
-d, --detach 容器运行于前台还是后台默认为false,如果为True,则输出containerID
--detach-keys string 设置容器的键盘映射键位,在容器被链接到前台时,
若宿主机的键盘键位与容器键位冲突,可以使用该
指令对容器的键位进行重新映射
--device list 添加主机设备给容器,相当于设备直通,将宿主机的设备映射至容器
--device-cgroup-rule list 将宿主机的设备添加到cgroup规则列表中
--device-read-bps list 以字节数/每秒的形式限制设备的读取速率
(docker run --device-read-bps /dev/sda:100KB)
--device-read-iops list 以每秒所执行IO操作的次数的形式限制设备的读取速率
--device-write-bps list 以字节数/每秒的形式限制设备的写入速率
--device-write-iops list 以每秒所执行IO操作的次数的形式限制设备的写入速率
--disable-content-trust 忽略镜像的校验 (default true)
--dns list 指定容器的dns服务器,默认和宿主一致
--dns-option list 设置DNS选项,同修改/etc/resolv.conf文件
--dns-search list 指定容器的dns搜索域名,默认和宿主一致,写入到容器
的/etc/resolv.conf文件
--domainname string Container NIS domain name
--entrypoint string 覆盖image的入口点
-e, --env list 设置环境变量
--env-file list 指定环境变量文件,文件格式为每行一个环境变量
--expose list 指定容器暴露的端口,即修改镜像的暴露端口
--gpus gpu-request GPU devices to add to the
container ('all' to pass all GPUs)
--group-add list 为容器添加用户组
--health-cmd string 执行一个健康检查命令
--health-interval duration 设置健康检查的执行的间隔时间 (ms|s|m|h) (default 0s)
--health-retries int 健康检查命令失败重试的次数
--health-start-period duration Start period for the container to
initialize before starting
health-retries countdown
(ms|s|m|h) (default 0s)
--health-timeout duration 设置健康检查命令超时时间 (ms|s|m|h) (default 0s)
--help Print usage
-h, --hostname string 容器的主机名
--init 使用init在容器中新增一个守护进程,来预防该容器出现僵尸进程的可能性
-i, --interactive 打开STDIN,用于控制台交互
--ip string IPv4 address (e.g., 172.30.100.104)
--ip6 string IPv6 address (e.g., 2001:db8::33)
--ipc string 启用ipc命名空间。容器中进程交互采用了Linux进程间交互方法
(interprocess communication - IPC), 包括信号量、消息队列和共享内存等。
容器的进程间交互实际上还是host上具有相同pid命名空间中的进程间交互,因
此需要在IPC资源申请时加入命名空间信息,每个IPC资源有一个唯一的32位id。
--isolation string 使用容器隔离
default 与使用dockerd --exec-opt的参数默认效果相同
process 使用linux内核命名空间进行隔离,该参数不支持windows环境。
--kernel-memory bytes 限制该容器内核的内存使用
-l, --label list 设置该容器的元数据
--label-file list 通过本地文件导入元数据至该容器
--link list 指定容器间的关联,使用其他容器的IP、env等信息
--link-local-ip list 设置本地链路地址(link-local address)ip
--log-driver string 设置一个指定日志接受工具,用于动态收集日志。
扩展阅读日志处理与log-driver实现
--log-opt list 用于设置日志输出参数
--mac-address string 设置该容器mac地址 (e.g.,
92:d0:c6:0a:29:33)
-m, --memory bytes 容器的内存上限
--memory-reservation bytes 软限制该容器的内存使用,当宿主机内存空闲时,该容器的内存
使用可以一定比例超出限制,但当宿主机内存紧张时,
会强制该容器内存使用限制在该参数之内
--memory-swap bytes 内存交换分区大小限制。配合参数--memory使用,且最小内存交
换限制应该大于内存限制。该参数有4种情况:
(1)不设置--memory与该参数:则该容器默认可以用完宿舍机的所有内存和
宿主机 swap 分区。
(2)设置--memory 50MB 不设置--memory-swap(默认为0):则--memory-
swap值等于限制内存大小,即该容器能够申请的最大内存为100MB。
(3)设置--memory 50MB --memory-swap为-1:则该容器最大可以申请的内存
为50MB+宿主机swap分区大小
(4)设置--memory 50MB --memory-swap 100MB:则该容器可以申请的最
大内存为100MB-50MB=50MB
--memory-swappiness int Tune container memory swappiness
(0 to 100) (default -1)
--mount mount 将文件系统挂载附加到容器
--name string 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--network network Connect a container to a network
--network-alias list 设置该容器在网络上的别名
--no-healthcheck 禁止一切健康检查行为
--oom-kill-disable 设置是否禁止oom kill行为,若该容器因为需要大量请求内存,导致
宿主机内存不足或触发到内存限制,导致杀死该容器进程,若设置该参数为true
则会关闭这个检查
--oom-score-adj int 调整主机的OOM首选项(从-1000到1000)
不建议用户修改--oom-score-adj--oom-kill-disable
--pid string 自定义设置该容器的pid namespace
--pids-limit int 该参数值为整数,为限制该容器所能创建的最大进程数。
--privileged 指定容器是否为特权容器,特权容器拥有所有的capabilities
--privileged参数可以是容器使用宿主机的管理员权限,即root权限一般情况下不
用该参数
-p, --publish list Publish a container's port(s) to
the host
-P, --publish-all Publish all exposed ports to
random ports
--read-only 设置该容器只读
--restart string 指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
--rm 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--runtime string 指定该容器关联一个runtime的容器
--security-opt list Security Options
--shm-size bytes 设置/dev/shm/目录的大小
--sig-proxy 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
--stop-signal string 停止带有信号的容器,在linux环境下输入kill -l,就可以看到所有信号名
称,可以指定容器发出某种信号时停止该容器,
譬如SIGKILL (default "SIGTERM")
--stop-timeout int 设置容器调用命令超时后自动退出。该参数可以设置容器在调用命令时
导致超时后多少秒退出,0为永远不退出,该参数单位为秒
--storage-opt list 设定该容器的存储空间,可以分别指定dm.basesize、
dm.loopdatasize、dm.loopmetadatasize等项,指定单个容器可用数据空间、
元数据可用数据空间。
--sysctl map 修改内核参数,对应修改容器中的/etc/sysctl.conf文件
--tmpfs list 指定挂载一个tmpfs目录,tmpfs是一种虚拟内存文件系统。可以不经由镜
像直接创建一个容器
-t, --tty 分配tty设备,持终端登录默认为false
--ulimit ulimit 设置容器的ulimit选项(default [])
-u, --user string 该容器下添加新用户 (format:
<name|uid>[:<group|gid>])
--userns string 指定该容器运行在指定user namespace中
--uts string 使用uts命名空间
-v, --volume list 容器挂载存储卷,挂载到容器的某个目录
--volume-driver string 默认 volume loclal,主机上的一个目录 mount 到容器内的一个目
录,不具备可移植性
--volumes-from list 给容器挂载其他容器上的卷,挂载到容器的某个目录
-w, --workdir string 容器的工作目录