docker run指令集

Posted 亮眼的昵称

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker run指令集相关的知识,希望对你有一定的参考价值。

常用指令

指令 说明
-a stdin 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
-d 后台运行容器,并返回容器ID
-i 以交互模式运行容器,通常与 -t 同时使用
-P 随机端口映射,容器内部端口随机映射到主机的端口
-p 指定端口映射,格式为:主机(宿主)端口:容器端口
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name="nginx-lb" 为容器指定一个名称
--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 绑定一个卷

特殊指令

权限相关

--privileged: 对容器中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-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-rt-period 限制CPU实时时间(以微秒为单位)
--cpu-rt-runtime 限制CPU实时运行时间(以微秒为单位)

CPU内核绑定

通过下面指令可以看到容器中进程与 CPU 内核的绑定关系,达到绑定 CPU 内核的目的

docker exec 容器ID taskset -c -p 1

参考:https://www.runoob.com/docker/docker-run-command.html
https://www.cnblogs.com/xuhao0705/p/14073525.html

以上是关于docker run指令集的主要内容,如果未能解决你的问题,请参考以下文章

Dockerfile最佳实践

docker容器启动时执行脚本 run /bin/bash执行多条指令

Docker Dockerfile 指令

Docker1指令,docker-compose,Dockerfile

Java Maven 项目中的 Docker 指令跳过测试

Docker 容器技术 — docker run