 !Docker Image Size (debian)alpine (Dockerfile) !Docker Image Size (alpine)基于OpenSSH的SFTP(SSH文件传输协议)服务器镜像,提供安全的文件传输服务。支持通过多种方式定义用户,可灵活配置权限、挂载存储卷,并支持完整的rsyslog日志功能。适用于需要安全文件共享、权限控制及持久化存储的场景。提供Debian(稳定)和Alpine(轻量)两种基础镜像供选择。
SFTP_USERS)或配置文件(/etc/sftp/users.conf)定义用户/etc/sftp.d/目录挂载脚本,容器启动时自动执行用户配置遵循以下语法:
user:pass[:e][:uid[:gid[:dir1[,dir2]...]]]
user: 用户名(必填)pass: 密码(为空时仅支持密钥登录):e: 标记密码为加密格式(可选)uid: 用户ID(可选,默认自动分配)gid: 用户组ID(可选,默认与UID相同)dir1[,dir2]: 自动创建的子目录(可选,多个目录用逗号分隔)/home/user/upload)/home目录,需确保用户主目录下至少有一个可写子目录(用户无法直接在主目录创建文件)/etc/ssh/ssh_host_*文件(如ssh_host_rsa_key、ssh_host_ed25519_key)SFTP_USERS: 定义用户的环境变量,格式与配置文件相同(如"foo:pass:1001:100:upload,docs")bashdocker run -p 22:22 -d corilus/sftp foo:pass:::upload
foo,密码passupload目录(位于/home/foo/upload)sftp foo@<host-ip>登录bashdocker run \ -v /host/path/upload:/home/foo/upload \ -p 2222:22 -d corilus/sftp \ foo:pass:1001
/host/path/upload目录挂载到用户foo的upload目录sftp -P 2222 foo@<host-ip>登录yamlsftp: image: corilus/sftp volumes: - /host/path/upload:/home/foo/upload ports: - "2222:22" command: foo:pass:1001:100:upload,docs
users.conf:foo:123:1001:100:upload bar:456:1002:100:docs,backup
bashdocker run \ -v /host/path/users.conf:/etc/sftp/users.conf:ro \ -v sftp_data:/home \ -p 2222:22 -d corilus/sftp
sftp_data为数据卷,持久化存储用户主目录bashdocker run --rm python:alpine python -c "import crypt; print(crypt.crypt('YOUR_PASSWORD'))"
bashdocker run \ -v /host/path/share:/home/foo/share \ -p 2222:22 -d corilus/sftp \ 'foo:$1$0G2g0GSt$ewU0t6GXG15.0hWoOX8X9.:e:1001'
bashdocker run \ -v /host/path/id_rsa.pub:/home/foo/.ssh/keys/id_rsa.pub:ro \ -v /host/path/share:/home/foo/share \ -p 2222:22 -d corilus/sftp \ foo::1001
.ssh/keys/目录(所有.pub文件会自动追加到authorized_keys)bashssh-keygen -t ed25519 -f ssh_host_ed25519_key < /dev/null ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key < /dev/null
bashdocker run \ -v /host/path/ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key \ -v /host/path/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key \ -v /host/path/share:/home/foo/share \ -p 2222:22 -d corilus/sftp \ foo::1001
bindmount.sh:bash#!/bin/bash # 挂载共享目录到多用户 home mount --bind /data/common /home/dave/common mount --bind /data/common /home/peter/common --read-only
CAP_SYS_ADMIN权限):bashdocker run \ --cap-add=SYS_ADMIN \ -v /host/path/bindmount.sh:/etc/sftp.d/bindmount.sh \ -v /host/data:/data \ -p 2222:22 -d corilus/sftp \ dave::1001 peter::1002
| 特性 | Debian版本 | Alpine版本 |
|---|---|---|
| 镜像体积 | 较大(约100MB+) | 较小(约10MB+) |
| 稳定性 | 高(仅接受bugfix和安全更新) | 较高(6个月发布周期) |
| OpenSSH版本 | 较低(稳定版) | 较高(最新版) |
| 适用场景 | 生产环境,追求稳定性 | 资源受限环境,追求轻量 |
注:镜像构建时间可能延迟OpenSSH更新,建议通过仓库确认具体版本,或自行克隆源码构建。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429