下面给你一个简单、实用、可直接复制执行的方案
👉 使用 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

✔ 加密级随机
✔ 安全性最高
❌ 不易读


对比总结表

项目pwgenopenssl 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。