一、概况

  • run: 创建一个新的容器并运行一个命令;

二、RUN详情

2.1 语法

$ sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

具体版本特性,可通过命令查看参数说明

$ sudo docker run --help

2.2 OPTIONS说明

  • –add-host: 向IP映射添加自定义主机

参数

类型

说明

--add-host

list

向IP映射添加自定义主机

示例:

$ sudo docker run -d --add-host cc-man:192.168.46.111 --add-host cc:192.168.46.62  -p 8088:8080 my_tomcat:7.0

进入容器内部查看是否生效

ADD RUN dockerfile 放在 docker run add host_docker run 命令

  • -a/–attach: 设置输入输出内容类型

参数

类型

可选参数

-a/--attach

list

stdin:STDIN, STDOUT or STDERR

说明:
stdin: 指定标准输入输出内容类型

  • block IO: 关于 IO 的限制

参数

类型

说明

--blkio-weight

uint16

块IO(相对权重),介于10和1000之间,或0为禁用(默认为0)

--blkio-weight-device

list

块IO(相对权重),介于10和1000之间,或0为禁用(默认为0)

  • cap-add/cap-drop: 添加/删除Liunx的内核修改功能

参数

类型

说明

--cap-add

list

添加Linux功能

--cap-drop

list

删除Linux功能

使用–cap-add和–cap-drop,配合–privileged,你可以更细致的控制container。默认使用这两个参数的情况下,container拥有一系列的内核修改权限。这两个参数都支持all值,如果你想让某个container拥有除了MKNOD之外的所有内核权限,那么可以执行下面的命令:

$ sudo docker run --cap-add=ALL --cap-drop=MKNOD ...
  • cgroup-parent
  • cidfile:.

参数

类型

说明

--cidfile

string

将容器ID写入文件

$ sudo docker run -d  --cidfile ./hh.sh ...
  • CPU

参数

类型

说明

--cpu-period

int

是用来指定容器对CPU的使用要在多长时间内做一次重新分配

--cpu-quota

int

是用来指定在这个周期内,最多可以有多少时间用来跑这个容器

--cpu-rt-period

int

是用来指定容器对CPU的使用要在多长时间内做一次重新分配(微秒限制CPU实时周期)

--cpu-rt-runtime

int

是用来指定在这个周期内,最多可以有多少时间用来跑这个容器(微秒限制CPU实时运行时间)

--cpu-shares或-c

int

CPU份额(相对权重)

--cpus

int

CPU数量

--cpuset-cpus

string

允许执行的CPU 根据实际情况配置

--cpuset-mems

string

只应用于 NUMA 架构的 CPU 生效,关于这个选项这里不过多介绍

cpu-period:

  • 默认的 CPU CFS「Completely Fair Scheduler」period 是 100ms。我们可以通过 --cpu-period 值限制容器的 CPU 使用。一般 --cpu-period 配合 --cpu-quota 一起使用。
  • 例如:比如说A容器配置的–cpu-period=100000 --cpu-quota=50000,那么A容器就可以最多使用50%个CPU资源,如果配置的–cpu-quota=200000,那就可以使用200%个CPU资源。
$ sudo docker run -it --rm --cpu-period=100000 --cpu-quota=200000 ...

cpu-shares:

  • 默认情况下所有容器的share(简单理解成是权重吧)是相同的,也就是所有容器有相同的权重,在所有容器一起竞争资源时,最终得到的资源是相同的。
  • 比如A和B两个容器,A配置的是1024,B配置的是512,那么A最大可以使用的CPU资源是B的两倍。还有一点要注意的是这种配置是有弹性的,如果A容器一直闲着,那B容器是可以使用空闲资源的。
$ sudo docker run -d  --cpu-shares 100  ...

cpus:

  • 设置CPU数量,主要不可以超出核心数,不然会报错
$ sudo docker run -d --cpus 1.21 ...

cpuset-cpus:

  • 允许执行的CPU 根据实际情况配置
  • 例如我有4核(0,1,2,3)我可以选择0-1两个CPU也可以分别选择1和3
$ sudo docker run -d --cpuset-cpus 0-1 ...
$ sudo docker run -d --cpuset-cpus 1,3 ...