docker搭建堡垒机环境
通过本地来搭建堡垒机环境,来模拟公司的堡垒机服务场景,通过Docker来跑JumpServer、Linux容器
- 需要具备熟悉JumpServer操作、linux服务器、Nginx配置
- docker搭建jumpServer和linux服务器的容器
- Linux本身就有大量 Docker 镜像,可以直接启动一个 Linux 容器来模拟服务器
- 注意:通过docker容器搭建的linux,很多命令没办法用
- 比如
systemctl、journalctl依赖 systemd - 想要完整的学习运维linux服务器,,更适合再搭一个完整 Ubuntu 虚拟机,而不是普通 Docker 容器
- 注意:普通的docker容器是不支持systemd服务,但是可以把容器改造下就可以支持!
- 比如
Mac搭建
Mac
│
└── Docker Desktop
│
├── JumpServer 容器
│ └── 模拟公司的堡垒机
│
└── Linux SSH 容器
└── 模拟一台真正的 Linux 服务器
本地搭建
- JumpServer + Linux SSH 容器
- SSH、资产配置、用户授权、JumpServer 登录、文件传输、容器管理和本地项目挂载
改造docker的linux容器
普通的docker的linux容器不支持systemd服务,普通的linux-server服务不支持systemd,因此没办法在Linux容器中学习这些命令,需要改造下容器,让其可以支持systemd等命令
- 让 systemd 作为容器 PID 1。
- Compose 增加
privileged、cgroup、/run临时文件系统和 cgroup 挂载- privileged: true: 给容器更高权限
- cgroup:Linux 的 “进程资源分组和限制机制”
JumpServer初始化
- 管理员初始账号
- 用户名:admin 密码:ChangeMe
- 首次登录进去之后,需要修改密码
- 创建 Linux 资产
- 地址名是:linux-server
jumpserver和linux-server在同一个 Docker Network- 因此jumpserver可以直接通过容器服务名来找到linux容器
- 不能通过localhost,否则jumpserver会尝试自己连接自己
- 地址名是:linux-server
Linux 资产创建资产账号
- 用于JumpServer通过SSH 登录 Linux 的账号
- 名称是 JumpServer 自己管理这个账号时使用的名字
| 配置项 | 建议填写 | 作用 |
|---|---|---|
| 名称 | developer | JumpServer 中显示的账号名称 |
| 用户名 | developer | Linux 真实 SSH 用户名 |
| 特权账号 | 不勾选 | 普通实验账号 |
| 切换自 | 不选 | 当前不需要 sudo/账号切换 |
| 密文类型 | 密码 | 使用密码 SSH 登录 |
| 密码 | LabPass1234 | Linux 用户密码 |
| 可改密 | 建议不勾 | 学习阶段暂时不需要 JumpServer 改 Linux 密码 |
| 立即推送 | 不勾选 | Linux 已经存在这个账号,不需要创建 |
| 激活 | 勾选 | 启用该账号 |
JumpServer资产授权
- 通过资产授权之后,
dev登录 JumpServer就能看到服务器了 - 在资产中-选择对应的linux服务器即可
名称:linux-lab-01
用户:
dev
↑ 你登录 JumpServer 的用户
资产:
linux-lab-01
账号:
dev
↑ Linux 的资产账号
SSH登录linux服务器
- 通过ssh登录linux服务器,需要在linux服务器创建账号
- JumpServer 最终要通过 SSH 连接 Linux 资产,那么 Linux 上必须存在一个可用于 SSH 登录的真实账号,需要在Linux服务器创建账号
- JumpServer本质上也是通过ssh的方式去连接linux资产
ssh 用户名@地址 -p 端口
# 通过dev用户进去linux容器
ssh dev@localhost -p 2223
创建linux服务器账号
# 进入linux服务器
docker exec -it linux-server bash
# 创建账号
useradd -m -s /bin/bash dev
# 修改密码
passwd dev
跑项目流程
- 跑本地项目,把本地的项目挂载同步到linux容器中,就可以在jumpServer中操作linux,来跑项目
- 公司项目,会有一个gitlab仓库的服务,在linux通过git clone来获取项目 通常会有业务服务器,构建服务器,构建服务器构建完之后推送到业务服务器中执行
- 建议不要直接在业务服务器中构建项目,因为在构建过程中,会消耗内存,容易造成业务服务器内存不足,导致资源紧张,会有宕机的风险
项目日志导出
- pm2日志
pm2 status
# 查看pm2的全部进程
pm2 list
# 查看某个进程的信息,可以看到进程的日志文件路径
pm2 show name
# 查看2026-08-22的pm2日志写入到 tmp/pm2-2026-08-22.log
grep "2026-08-22" -r /var/log/lab/demo-node-out.log > /tmp/pm2-2026-08-22.log
- 在本机终端执行scp下载日志导出
- 远程到linux服务器
- 找到tmp/pm2-2026-08-22.log文件
- 复制到~/Downloads/目录中
# 在Mac 终端里执行
scp -P 2223 dev@localhost:/tmp/pm2-2026-08-22.log ~/Downloads/
在linux容器安装nginx
在linux容器中安装nginx,来使用nginx配置、反向代理等流程
- Nginx放在
linux-server容器中 - 在现有的
linux-server容器中直接安装并运行 Nginx - Nginx 是通过
Dockerfile直接构建到linux-server镜像中的,可以不需要手动进入容器安装。
# 在Dockerfile中增加
apt-get install nginx