通过docker run增加相关选项进行限制。
例:
docker run -it --cpuset-cpus 0 --memory 4g --pids-limit 30 --network none host-ubuntu-cdt-sys:v1.5.0 /bin/bash
一、使用docker cgroups
1.CPU 限制
--cpuset-cpus n (单个 CPU 编号) 将容器限制在某些核上运行
--cpu-shares n (CPU 权重数) 两个容器权重越大占用的CPU周期数越多
2.内存限制
--memory n <单位> 其中单位=b(指byte), k(指kb), m(指mb) 或 g(指gb)
3.进程数限制
--pids-limit n 限制容器内进程数,可以防止fork炸弹
二、指定网络模式进行隔离
--network 网络模式 (bridge、host、container、none ,默认bridge)
1.none
不为 Docker 容器构造任何网络环境,容器只能使用127.0.0.1的本机网络,即完全隔离。
2.bridge
不具有公有ip,docker采用 NAT 方式连接外网
3. host
Docker 容器会和 host 宿主机共享同一个网络,IP 地址同 host 宿主机的 IP 地址,需要注意容器中端口号不能与host 宿主机上端口号相冲突
4.container
需要指定容器名 如 -- network container:容器名
容器间共享网络,不存在隔离,但与host宿主机存在隔离。需要注意端口冲突情况,否则第二个容器将无法被启动
三、docker容器中的root权限
1.docker中的root权限受限。
Docker 能调整容器中的进程针对主机上的 OS 功能的访问授权,这些功能访问授权称为 capability。 Docker 在创建容器时,会默认去除一组 capability,包括:
SETPCAP: 修改进程的 capability
SYS_MODULE: 插入/删除内核模块
SYS_RAWIO: 修改内核内存
SYS_PACCT: 配置进程的记账
SYS_NICE: 修改进程的优先级
SYS_RESOURCE: 覆盖资源的限制
SYS_TIME: 修改系统时钟
SYS_TTY_CONFIG: 配置 TTY 设备
AUDIT_WRITE: 写审计日志
AUDIT_CONTROL: 配置审计子系统
MAC_OVERRIDE: 忽略内核 MAC 策略
MAC_ADMIN: 配置 MAC 设置信息
SYSLOG: 修改内核的 print 行为
NET_ADMIN: 配置网络
SYS_ADMIN: 表示系统管理的全部功能
2.不用 Volume进行文件夹映射时,不会对宿主机上的对应文件系统造成权限影响。
网友评论