下面给你一个简单、实用、可直接复制执行的方案
👉 使用 Docker 部署 pwgen(简单密码生成器)
覆盖 命令行用法 / 封装成服务 / Web 形式(可选) 三种场景。
一、pwgen 是什么?
pwgen 是一个轻量级的密码生成工具,用于生成:
- 随机密码
- 指定长度
- 是否包含数字 / 特殊字符
- 多个密码一次生成
📌 常见用途:
- 运维生成初始密码
- 脚本自动化
- 临时账号密码
二、方式一:直接用 Docker 运行 pwgen(最推荐 ⭐⭐⭐⭐⭐)
这是最简单、最纯粹的用法,不需要写 Dockerfile。
1️⃣ 直接运行 pwgen
docker run --rm alpine sh -c "apk add --no-cache pwgen && pwgen 16 5"
解释:
| 参数 | 说明 |
|---|---|
--rm | 用完即删容器 |
alpine | 超小镜像 |
pwgen 16 5 | 生成 5 个 16 位密码 |
2️⃣ 常用 pwgen 参数示例
# 生成 1 个 20 位密码
pwgen 20 1
# 包含数字
pwgen -n 16 1
# 包含特殊字符
pwgen -s 16 1
# 强密码(推荐)
pwgen -sy 16 3
3️⃣ 实际 Docker 示例
docker run --rm alpine sh -c \
"apk add --no-cache pwgen && pwgen -sy 16 3"
输出示例:
H9$3m!2QzR@e8P#A
Qw7@!9Zx4%R8KpM2
三、方式二:自定义 pwgen Docker 镜像(方便长期使用)
适合:服务器经常用 pwgen
1️⃣ 创建 Dockerfile
mkdir pwgen-docker
cd pwgen-docker
Dockerfile
FROM alpine:latest
RUN apk add --no-cache pwgen
ENTRYPOINT ["pwgen"]
2️⃣ 构建镜像
docker build -t pwgen .
3️⃣ 使用自定义镜像
docker run --rm pwgen -sy 16 5
📌 像本地命令一样用 Docker
四、方式三:pwgen + Shell 脚本(更友好)
1️⃣ 创建脚本
gen.sh
#!/bin/sh
pwgen -sy 16 1
2️⃣ Dockerfile(脚本版)
FROM alpine
RUN apk add --no-cache pwgen
COPY gen.sh /gen.sh
RUN chmod +x /gen.sh
ENTRYPOINT ["/gen.sh"]
3️⃣ 使用
docker run --rm pwgen
五、方式四:pwgen 封装成 Web 密码生成器(可选进阶)
⚠️ 如果你只是想生成密码,不推荐上 Web
但学习 Docker + 服务很合适。
示例:pwgen + HTTP API(极简)
docker run -d \
--name pwgen-web \
-p 8080:8080 \
alpine sh -c \
"apk add --no-cache pwgen busybox-extras && \
httpd -f -p 8080 -h /www"
(生产建议用现成 Web 密码工具)
六、为什么用 Docker 跑 pwgen?
| 优点 | 说明 |
|---|---|
| 无需安装 | 宿主机零污染 |
| 跨平台 | Linux / Mac / Windows |
| 用完即走 | 安全 |
| 可脚本化 | CI/CD |
七、常见问题
❌ 容器一运行就退出?
✅ 正常
pwgen 是一次性命令工具
❌ 如何复制生成的密码?
直接复制终端输出即可
❌ 能写成别名吗?
alias pwgen-docker='docker run --rm pwgen'
之后:
pwgen-docker -sy 20 1
八、推荐使用方式(总结)
| 场景 | 推荐方式 |
|---|---|
| 偶尔用 | docker run alpine pwgen |
| 经常用 | 自定义镜像 |
| 自动化 | CI / 脚本 |
| 学习 Docker | 自建 Dockerfile |
九、一句话总结(必记)
pwgen 是一次性命令工具,
用 Docker 运行最干净、最安全,
Alpine + pwgen 是最佳组合。
好,1️⃣2️⃣3️⃣4️⃣ 我一次性全部给你,做成一份运维/面试/实战都能直接用的 pwgen 完整速查与对比合集 👇
一、pwgen 参数速查表(1️⃣)
最常用参数(必背)
| 参数 | 作用 | 示例 |
|---|---|---|
-n | 包含数字 | pwgen -n 16 1 |
-s | 完全随机(强密码) | pwgen -s 16 1 |
-y | 包含特殊字符 | pwgen -sy 16 1 |
-c | 至少一个大写字母 | pwgen -c 16 1 |
-v | 排除易混淆字符 | pwgen -v 16 1 |
⭐ 推荐安全组合(生产)
pwgen -syc 20 3
二、pwgen + CI / 自动化(2️⃣)
示例:CI 中自动生成数据库密码
DB_PASS=$(docker run --rm pwgen -sy 20 1)
echo "DB_PASS=$DB_PASS"
GitHub Actions 示例
- name: Generate Password
run: |
PASS=$(docker run --rm pwgen -sy 20 1)
echo "DB_PASS=$PASS" >> $GITHUB_ENV
📌 优点:
- 不落盘
- 可复现
- 容器即工具
三、pwgen vs openssl rand(3️⃣ 面试必问)
1️⃣ pwgen
pwgen -sy 16 1
✔ 易用
✔ 可读性好
❌ 随机性略低于 openssl
2️⃣ openssl rand
openssl rand -base64 16
✔ 加密级随机
✔ 安全性最高
❌ 不易读
对比总结表
| 项目 | pwgen | openssl rand |
|---|---|---|
| 易用性 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 安全性 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 可读性 | ⭐⭐⭐⭐ | ⭐ |
| 运维常用 | ✅ | ✅ |
📌 结论:
- 用户密码 →
pwgen - 密钥 / Token →
openssl rand
四、Docker 运维小工具合集(4️⃣ 强烈推荐)
1️⃣ pwgen(密码)
docker run --rm pwgen -sy 20 1
2️⃣ htpasswd(HTTP 认证)
docker run --rm httpd htpasswd -nb user pass
3️⃣ jq(JSON 处理)
docker run --rm -i imega/jq jq '.name'
4️⃣ curl + httpie(API 调试)
docker run --rm curlimages/curl curl https://example.com
📌 理念:
Docker = 工具箱
用完即删,不污染系统
五、推荐你的最终使用姿势(实战)
① 构建 pwgen 专用镜像
docker build -t pwgen .
② 设置 shell 别名
alias pwgen='docker run --rm pwgen'
③ 像本地命令一样用
pwgen -sy 24 1
六、一句话终极总结(背下来)
pwgen 适合生成用户密码,
Docker 让它变成零安装工具,
CI 自动化用 pwgen,
高安全密钥用 openssl rand。
发表回复