[草稿]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 内存软限制
  • cpu限额
参数名称 说明
--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 内核的绑定关系,达到绑定 CPU 内核的目的

docker exec 容器ID taskset -c -p 1
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2023-12-01 17:28:17

results matching ""

    No results matching ""