68. 日志驱动设置:docker run --log-driver=json-file --log-opt max-size=10m --name 容器名称 镜像名称
解析:
--log-driver=json-file:指定使用 JSON 文件日志驱动,这是 Docker 默认的日志驱动,将容器的标准输出和错误以 JSON 格式记录到文件中。
--log-opt max-size=10m:设置日志文件的最大大小为 10MB。当日志文件达到这个大小时,Docker 会自动创建新的日志文件,防止单个日志文件过大。
69. 日志标签添加:docker run --log-opt tag="{{.Name}}/{{.ID}}" 镜像名称
解析:
--log-opt tag="{{.Name}}/{{.ID}}" 为容器日志添加自定义标签,使用 Go 模板语法:
{{.Name}}:替换为容器名称
{{.ID}}:替换为容器 ID 的前12个字符
容器启动后,其日志会带有 容器名/容器ID 格式的标签,便于日志识别和分类。
70. 环境变量注入:docker run -e TZ=Asia/Shanghai -e APP_ENV=prod 镜像名称
解析:
使用 -e 选项向容器注入环境变量:
-e TZ=Asia/Shanghai:设置容器的时区环境变量为亚洲/上海时区
-e APP_ENV=prod:设置应用运行环境为生产环境
容器启动后,这些环境变量可在容器内通过 echo $TZ 等方式访问,应用程序可据此调整时区和运行模式。
71. 时区同步配置:docker run -v /etc/localtime:/etc/localtime:ro 镜像名称
72. 容器自启策略:docker run --restart=on-failure:5 镜像名称(失败时最多重启5次)
73. 内核参数调整:docker run --sysctl net.core.somaxconn=1024 镜像名称
解析:
通过 --sysctl 选项调整容器内内核参数:
--sysctl net.core.somaxconn=1024:将容器内的内核参数 net.core.somaxconn 设置为1024
该参数控制每个网络端口监听队列的最大长度
容器启动时会应用此内核参数设置,仅影响当前容器,不影响宿主机或其他容器
74. 容器资源限制:docker run --cpus=".5" -m 500m --blkio-weight=500 镜像名称
解析:
--cpus=".5":限制容器最多使用0.5个CPU核心的计算能力,相当于50%的单个CPU核心。
-m 500m:限制容器内存使用量为500MB,容器不能超过这个内存限制。
--blkio-weight=500:设置容器的块I/O权重为500(范围10-1000),权重越高,容器在磁盘I/O操作中获得的优先级越高。
75. OOM优先级设置:docker run --oom-score-adj=500 镜像名称(值越高越易被kill)
解析:
--oom-score-adj=500 设置容器的 OOM(内存溢出)调整分数为500。
OOM分数范围:-1000 到 1000
设置值500:正值表示容器进程更容易被系统OOM killer终止
优先级规则:值越高,在系统内存不足时越容易被优先终止以释放内存
容器启动后,其进程的OOM调整分数将设为500,在内存竞争时处于较高的终止优先级。
76. 容器用户隔离:docker run --user 1000:1000 镜像名称(避免root运行)
解析:
--user 1000:1000 指定容器以非root用户身份运行:
1000:1000:设置容器运行时的用户ID(UID)为1000,组ID(GID)为1000
这个数字ID通常对应宿主机上的普通用户账号(如ubuntu系统默认的第一个用户)
容器内的所有进程将以这个非root用户身份运行,而不是默认的root用户
容器启动后,所有进程都以UID 1000/GID 1000运行,降低了容器被攻击后获取宿主机root权限的风险,增强了安全性。
77. 只读文件系统:docker run --read-only 镜像名称(需配合tmpfs使用)
78. 能力控制:docker run --cap-add NET_ADMIN --cap-drop SYS_ADMIN 镜像名称
解析:
--cap-add NET_ADMIN:向容器添加网络管理能力,允许容器执行网络配置操作,如设置路由、配置网络接口等。
--cap-drop SYS_ADMIN:从容器中移除系统管理能力,禁止容器执行特权系统操作,如挂载文件系统、设置主机名等。
安全原则:遵循最小权限原则,只赋予容器运行所需的最低权限,减少攻击面,提高安全性。
79. 安全加固:docker run --security-opt no-new-privileges 镜像名称(禁止提权)
80. AppArmor配置:docker run --security-opt apparmor=my_profile 镜像名称
解析:
--security-opt apparmor=my_profile 为容器指定自定义的 AppArmor 安全配置文件。
AppArmor:Linux 内核安全模块,通过配置文件限制进程的权限
my_profile:自定义的 AppArmor 配置文件名称,需提前在宿主机上创建并加载
作用:容器启动后将应用此配置文件,按规则限制容器内进程的文件访问、网络操作等能力,增强安全性
此配置通过强制访问控制机制,限制容器内进程的行为,即使容器被攻击,攻击者也会受到配置文件规则的限制。
81. SELinux标签:docker run --security-opt label=type:container_t 镜像名称
82. 设备访问授权:docker run --device=/dev/snd:/dev/snd:rw 镜像名称