Anolis OS 8.10 Docker 部署 SonarQube 9.9 完整教程 目录环境前置说明一、安装 Docker Docker Compose1. 安装 Docker2. 配置国内镜像加速可选拉镜像更快二、修改系统内核参数SonarQube 强制要求否则启动失败三、创建部署目录与 compose 配置1. 新建工作目录2. 编写 docker-compose.yml四、防火墙放行端口五、启动 SonarQube 9.9正常启动标志六、访问与初始化七、常见问题排查Anolis OS 8.10 高频报错问题 1Elasticsearch 启动失败 max_map_count 不足问题 2文件句柄过低报错 too many open files问题 3数据库连接失败问题 4页面访问超时 / 打不开八、日常运维命令补充单机低配2C2G内存调优环境前置说明Anolis OS 8.10 兼容 CentOS 8 操作逻辑内核、系统参数配置通用SonarQube 9.9 LTS 要求内存至少 2G生产推荐 4G数据库PostgreSQL 13~15官方不支持 MySQL系统内核参数调整虚拟内存、文件句柄容器方案sonarqube:9.9-community 独立 postgres 数据库容器一、安装 Docker Docker Compose1. 安装 Docker# 安装依赖 dnf install -y dnf-plugins-core # 添加阿里云docker源 dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装docker dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 启动并开机自启 systemctl start docker systemctl enable docker # 验证 docker --version docker compose version2. 配置国内镜像加速可选拉镜像更快mkdir -p /etc/docker cat /etc/docker/daemon.json EOF { registry-mirrors: [ https://docker.1ms.run, https://docker.xuanyuan.me, https://docker.m.daocloud.io ] } EOF systemctl daemon-reload systemctl restart docker二、修改系统内核参数SonarQube 强制要求否则启动失败SonarQube 使用 Elasticsearch必须调整vm.max_map_count、文件打开数限制# 1. 临时生效 sysctl -w vm.max_map_count262144 sysctl -w fs.file-max65536 # 2. 永久写入配置 echo vm.max_map_count262144 /etc/sysctl.conf echo fs.file-max65536 /etc/sysctl.conf sysctl -p # 3. 修改进程打开文件限制 cat /etc/security/limits.conf EOF * soft nofile 65536 * hard nofile 65536 sonarqube soft nproc 4096 sonarqube hard nproc 4096 EOF三、创建部署目录与 compose 配置1. 新建工作目录mkdir -p /data/sonarqube cd /data/sonarqube # 创建持久化数据目录 mkdir -p data logs extensions postgres_data # 授权sonarqube容器运行用户uid1000 chmod -R 777 ./2. 编写 docker-compose.ymlservices: postgres: image: postgres:14 container_name: sonar-postgres restart: always environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: Sonar123456 POSTGRES_DB: sonarqube volumes: - ./postgres_data:/var/lib/postgresql/data networks: - sonar-net healthcheck: test: [CMD-SHELL, pg_isready -U sonar] interval: 10s timeout: 5s retries: 5 sonarqube: image: sonarqube:9.9-community container_name: sonarqube-9.9 restart: always depends_on: postgres: condition: service_healthy environment: # 数据库连接 SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonarqube SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: Sonar123456 # JVM内存2C4G机器配置 SONAR_CE_JAVAOPTS: -Xmx2048m SONAR_WEB_JAVAOPTS: -Xmx1024m SONAR_SEARCH_JAVAOPTS: -Xms512m -Xmx512m volumes: - ./data:/opt/sonarqube/data - ./extensions:/opt/sonarqube/extensions - ./logs:/opt/sonarqube/logs ports: - 9000:9000 networks: - sonar-net ulimits: nofile: soft: 65536 hard: 65536 nproc: soft: 4096 hard: 4096 networks: sonar-net:四、防火墙放行端口Anolis OS 8 默认 firewalld# 放行9000端口 firewall-cmd --add-port9000/tcp --permanent firewall-cmd --reload # 查看端口放行 firewall-cmd --list-ports五、启动 SonarQube 9.9cd /data/sonarqube # 后台启动 docker compose up -d # 查看启动日志观察es、web、ce是否正常 docker compose logs -f sonarqube正常启动标志日志出现SonarQube is up代表启动完成首次初始化耗时 3~5 分钟。六、访问与初始化访问地址http://服务器IP:9000默认账号密码用户名admin密码admin首次登录强制修改密码建议设置复杂密码。七、常见问题排查Anolis OS 8.10 高频报错问题 1Elasticsearch 启动失败 max_map_count 不足max virtual memory areas vm.max_map_count [65530] is too low解决重新执行第二节内核参数配置sysctl -p重载。问题 2文件句柄过低报错too many open files解决检查/etc/security/limits.conf重启容器docker compose down docker compose up -d问题 3数据库连接失败确认 postgres 容器健康docker compose ps核对 JDBC 账号密码不要包含特殊符号空格清空持久化目录重新初始化数据会丢失docker compose down rm -rf ./postgres_data ./data docker compose up -d问题 4页面访问超时 / 打不开防火墙 9000 端口是否放行云服务器安全组入站规则开放 9000查看容器日志是否启动成功八、日常运维命令# 停止 docker compose down # 重启 docker compose restart sonarqube # 查看实时日志 docker compose logs -f sonarqube # 备份数据直接打包 ./data ./postgres_data 目录 # 升级修改image版本后重新up -d补充单机低配2C2G内存调优修改sonarqube下环境变量内存参数降低占用SONAR_CE_JAVAOPTS: -Xmx1024m SONAR_WEB_JAVAOPTS: -Xmx512m SONAR_SEARCH_JAVAOPTS: -Xms256m -Xmx256m