# 集群环境下如何进行Docker基线修复？
在Kubernetes/Swarm/CCE（云容器引擎）等托管集群中，Docker守护进程参数与容器运行时均由集群控制面统一管理。
直接按基线建议在节点上修改，可能引发以下问题：
- 配置被还原：节点重新纳管、容器重建后，编排系统周期性还原配置。
- 集群异常：调整dockerd启动参数后，节点失联或Pod无法调度。
- 无修改入口：容器由工作负载（Deployment/StatefulSet/DaemonSet）管理，节点上无直接修改路径。
因此，Docker基线修复需要区分类型：节点层面修复、集群/工作负载层面修复。
#### 如何判断是否为集群环境
在执行Docker基线修复前，先确认目标主机是否处于托管集群，若满足以下任意一条，表示当前为集群托管环境。
表1判断方法 
| 序号 | 判断方法                                                                                                                                                     |
|:---|:---|
| 1 | 检查集群组件进程 **ps -ef \| grep -E 'kubelet\|kube-proxy\|docker-swarm\|containerd' \| grep -v grep**                            |
| 2 | 检查集群配置文件 **ls /etc/kubernetes/ 2\>/dev/null** **systemctl status kubelet 2\>/dev/null**       |
| 3  | 检查容器编排标记 **docker info 2\>/dev/null \| grep -iE 'swarm\|cluster'** 存在编排标记时，表示当前为集群托管环境。 |
| 4 | 检查环境变量CLUSTER_ID **env \| grep CLUSTER_ID** 存在CLUSTER_ID环境变量时，表示当前为集群托管环境。                  |
| 5  | 检查云平台纳管 CCE/云管纳管节点若存在agent进程或节点标签/annotations含集群标识，表示当前为集群托管环境。                                                         |
   
#### 常见修复场景建议
您可以根据以下场景，判断基线修复是在节点层面修复、还是集群/工作负载层面修复。
表2修复场景 
| 场景           | 风险等级 | 修复建议                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| 文件权限/属主类     | 低风险  | **节点上可直接修复**，常见修复项如下： - docker.service文件属主  - chown/chmod systemd unit文件：托管集群的unit文件可能由集群安装程序生成，修改后升级可能被还原。  - docker.sock属主  - chown/chmod socket文件  - /etc/docker目录属主  - Docker守护进程审计   |
| 宿主机分区类       | 高风险   | 为容器创建单独分区，例如将/var/lib/docker挂载到独立分区（LVM）。需要停止Docker服务、数据迁移、修改/etc/fstab挂载配置等，建议提前申请停机窗口由人工操作。**不建议在线自动修复**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| dockerd启动参数类 | 高风险  | dockerd启动参数影响范围为整个Daemon进程。在托管集群环境下，不允许在单个节点上修改此类参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 运行中容器配置类       | 高风险 | 建议在集群/工作负载层面修复。 - Docker inspect运行中容器相关配置  - K8s：在Pod的SecurityContext/Resources/restartPolicy相关配置  - 网络相关配置：自定义网络、特权端口。  - 通过规范容器镜像（不内置SSH、不挂载docker.sock）解决的配置。                                                                                                                                                    |
   
