[草稿]docker run 详解
常用指令
参数名称 |
说明 |
-a stdin |
指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 |
-d |
后台运行容器,并返回容器ID |
-i |
以交互模式运行容器,通常与 -t 同时使用 |
-P |
随机端口映射,容器内部端口随机映射到主机的端口 |
-p |
指定端口映射,格式为:主机(宿主)端口:容器端口 |
-t |
为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
--name="xxx" |
为容器指定一个名称,比如 xxx |
--dns 8.8.8.8 |
指定容器使用的DNS服务器,默认和宿主一致 |
--dns-search example.com |
指定容器DNS搜索域名,默认和宿主一致 |
-h "mars" |
指定容器的hostname |
-e username="ritchie" |
设置环境变量 |
--env-file=[] |
从指定文件读入环境变量 |
--cpuset="0-2" or --cpuset="0,1,2" |
绑定容器到指定CPU运行 |
-m |
设置容器使用内存最大值 |
--net="bridge" |
指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型 |
--link=[] |
添加链接到另一个容器 |
--expose=[] |
开放一个端口或一组端口 |
--volume, -v |
绑定一个卷 |
-restart=always |
docker服务重启之后容器自启动 |
特殊指令
参数名称 |
说明 |
--privileged=true |
对容器中root用户进行提权,使其拥有对宿主机的root操作权限 |
--net=host |
容器与宿主机共用网卡 |
--pid=host |
使容器能够看到宿主机上的进程 |
--ipc=host |
这个是允许我们设置一些kernel的参数,例如:docker run –sysctl net.ipv4.ip_forward=1 test:2.3 |
参数名称 |
说明 |
-m --memory |
设置内存限额,如500M |
--memory-swap |
设置swap和内存的使用限制,即该限制为内存加交换的大小,使用-1,代表不限制 |
--memory-reservation |
内存软限制 |
参数名称 |
说明 |
--cpus num |
限制CPU数量 |
--cpuset-cpus |
允许容器占用那核CPU,例如:--cpuset-cpus 0,3 --cpuset-cpus 0-4 |
cpuset-mems |
MEMs in which to allow execution (0-3, 0,1),只应用于 NUMA 架构的 CPU 生效 |
--cpu-period int |
指定容器对CPU的使用要在多长时间内做一次重新分配 |
--cpu-quota int |
指定在这个周期内,最多可以有多少时间用来跑这个容器,最小值为1000微秒,最大值为1秒,默认为-1,表示不做控制, |
--cpu-rt-period |
限制CPU实时时间(以微秒为单位) |
--cpu-rt-runtime |
限制CPU实时运行时间(以微秒为单位) |
注1. --cpu-quota与--cpu-period一般配合使用,例如:容器进程需要每1秒使用单个CPU的0.2秒时间,可以将cpu-period设置为1000000(即1秒),cpu-quota 设置为 200000(0.2 秒)。当然,在多核情况下,如果允许容器进程完全占用两个CPU,则可以将cpu-period设置为100000(即0.1秒),cpu-quota设置为200000(0.2秒)。
通过下面指令可以看到容器中进程与 CPU 内核的绑定关系,达到绑定 CPU 内核的目的
docker exec 容器ID taskset -c -p 1