Docker化JumpServer:从零到一的容器化堡垒机部署实战

发布时间:2026/7/8 22:28:01

Docker化JumpServer:从零到一的容器化堡垒机部署实战 1. 为什么选择Docker部署JumpServer想象一下你管理着几十台服务器每天要处理不同团队的访问请求。每次有新同事加入都要手动配置SSH密钥每次出现安全问题都要翻遍各种日志文件查操作记录。这种场景下JumpServer就像你的运维瑞士军刀而Docker则是让这把刀更锋利的磨刀石。我三年前第一次接触JumpServer时花了整整两天时间折腾源码安装。各种Python依赖冲突、配置文件路径错误最后连MySQL连接池都报错。直到发现官方Docker镜像原来20分钟就能完成全套部署。现在我的团队维护着三套JumpServer实例全部运行在Docker上最久的已经稳定运行400多天。相比传统部署方式容器化方案有三个杀手级优势隔离性所有组件Web、MySQL、Redis跑在独立容器里再也不用担心Python环境污染可移植性把整个服务打包成镜像换个服务器5分钟就能重建版本控制像代码一样用tag管理版本回滚只需一条docker命令2. 部署前的准备工作2.1 硬件与系统要求虽然Docker能屏蔽很多环境差异但基础配置不到位照样会翻车。根据我的踩坑经验建议准备服务器2核CPU/4GB内存是最低配生产环境建议4核8G起步磁盘空间/var/lib/docker目录至少预留50GB审计日志很吃存储操作系统CentOS 7.9或Ubuntu 20.04 LTS内核版本≥3.10去年有个客户用CentOS 7.4部署结果Docker的overlay2驱动频繁报错。升级到7.9后问题消失所以别在系统版本上省钱。2.2 安装Docker引擎官方文档说要用Docker 20.10但我实测18.06也能跑。不过为了能用compose v3特性建议按这个步骤装最新版# Ubuntu示例 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io装完后一定要做三件事sudo systemctl enable docker设置开机自启sudo usermod -aG docker $USER避免每次sudodocker run hello-world验证安装3. 一键部署实战3.1 获取安装脚本官方提供了quick_start.sh但直接wget可能遇到证书问题。我更喜欢先下载到本地再scp上传wget https://github.com/jumpserver/jumpserver/releases/download/v2.25.1/quick_start.sh chmod x quick_start.sh这个脚本会自动做三件事创建/opt/jumpserver目录结构拉取MySQL、Redis等依赖镜像生成默认配置文件3.2 启动安装过程执行脚本时加-d参数可以让它在后台下载镜像否则网络超时就得重来./quick_start.sh -d第一次运行会看到这样的输出[1/3] Pulling mysql:5.7 [2/3] Pulling redis:6.2 [3/3] Pulling jumpserver/jms_all:v2.25.1如果卡在某个镜像可以手动docker pull。我有次在阿里云环境遇到redis拉取慢换成国内镜像源就快了。4. 初始配置与优化4.1 服务管理命令安装完成后会生成控制脚本常用命令要记牢cd /opt/jumpserver-installer-v2.25.1 ./jmsctl.sh start # 启动 ./jmsctl.sh stop # 停止 ./jmsctl.sh restart # 重启 ./jmsctl.sh upgrade # 升级有个容易忽略的细节修改配置后必须restart才能生效reload是没用的。4.2 安全加固建议首次登录用admin/admin后立即做四件事在系统设置里改密码开启MFA双因素认证配置邮件/SMTP告警限制管理员IP白名单我见过没改密码的测试环境被爆破攻击者创建了隐藏账号。现在团队规定所有JumpServer必须配证书登录操作审计。5. 常见问题排错指南5.1 端口冲突处理如果80端口被占用修改nginx配置vim /opt/jumpserver/config/nginx/lb_http_server.conf把listen 80;改成其他端口比如8080。改完记得docker restart jms_nginx5.2 磁盘空间监控审计日志默认存放在/opt/jumpserver/core/data/audit_logs建议用logrotate定期切割# 创建日志轮转配置 cat /etc/logrotate.d/jumpserver EOF /opt/jumpserver/core/data/audit_logs/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 root root } EOF去年我们有个项目日志暴涨把磁盘写满导致MySQL容器崩溃。现在所有部署都默认加监控# 监控docker存储目录 df -h /var/lib/docker # 监控日志目录 du -sh /opt/jumpserver/core/data/*6. 生产环境进阶配置6.1 对接外部数据库自带的MySQL容器适合测试生产环境建议用独立RDS。修改配置文件的姿势vim /opt/jumpserver/config/config.txt找到这些参数调整DB_HOSTyour_rds_address DB_PORT3306 DB_USERjumpserver DB_PASSWORDyour_strong_pwd DB_NAMEjumpserver改完别急着重启先用mysql客户端测试连通性否则服务会起不来。6.2 性能调优参数高并发场景下要调整两个关键参数Web并发数修改jms_core容器的环境变量WORKERS8Redis连接池在config.txt添加REDIS_MAX_CONNECTIONS100我们压测时发现默认配置在200并发时响应变慢调整后稳定支持500并发。监控方法watch -n 1 docker stats --no-stream jms_core jms_redis7. 版本升级实战小版本升级如v2.24→v2.25一般很平滑但大版本v1→v2要特别注意先看官方升级文档的Breaking Changes备份数据库和配置文件用jmsctl.sh stop停服务修改quick_start.sh中的版本号重新运行上个月我们升级v2.24→v2.25时发现新版本要求Redis 6.2。幸好提前测试否则直接升级会导致服务不可用。

相关新闻