本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

由于Docker Hub的自动构建功能已不可用,本README不会自动更新,但会保持最新状态。这也意味着GitHub仓库不再显示为源码来源。镜像现在通过GitLab CI推送,构建过程日志可在GitLab查看。镜像同时发布在GitLab,建议优先使用GitLab仓库的镜像,尤其是在可能触及Docker Hub新限制的情况下。
registry.gitlab.com/kalaksi-containers/tftpd)docker.io/kalaksi/tftpd)本容器运行TFTP服务器,其/tftpboot目录预填充了PXE启动所需的文件和配置,同时兼容U-Boot和Raspberry Pi 4设备。
本容器的设计以简洁性和安全性为核心。许多社区容器默认以root权限运行,且未提供删除不必要权限能力的支持;此外,复杂的shell脚本和非***基础镜像增加了源码验证和镜像更新的难度。为解决这些问题,本镜像在设计时重点关注安全性、简洁性和整体质量。
| 要求 | 状态 | 详情 |
|---|---|---|
| 非root用户运行 | ❌ | 目前无法在非root权限下运行tftpd(需进一步排查原因),但会主动降低权限。 |
| 透明构建过程 | ✅ | 可验证容器与代码一致性,详见GitLab CI。 |
| ***基础镜像 | ✅ | 使用***基础镜像,确保可靠性。 |
| 删除额外权限能力 | ✅ | 详见docker-compose.yml配置。 |
| 无默认密码 | ✅ | 不包含静态默认密码,避免默认不安全配置。 |
| 支持密钥文件 | ✅ | 支持通过文件(而非环境变量)提供敏感信息(如密码)。 |
| 正确处理信号 | ✅ | 容器可正确响应系统信号。 |
| 简洁Dockerfile | ✅ | 不扩展容器职责边界,合理情况下所有逻辑均在Dockerfile中实现。 |
| 版本化标签 | ✅ | 提供版本化标签以确保稳定性。 |
适用于需要构建PXE网络启动环境的场景,包括但不限于:
latest:默认标签,包含最新更新1.1,对应GitHub的1.1.x分支用户需自行填充/tftpboot/boot目录中的启动镜像,并通常需要替换/tftpboot/pxelinux.cfg目录为自定义配置。具体示例可参考源码仓库中的docker-compose.yml。
以下为/tftpboot目录结构示例,包含LibreELEC和RaspBian(Raspberry Pi)的启动文件:
/tftpboot ├── pxelinux.cfg <- PXELINUX配置目录(需挂载自定义目录覆盖以定制) │ └── default <- 默认配置文件 ├── boot <- 存放启动文件的目录(需用户填充) │ ├── libreelec │ │ └── KERNEL <- 示例:LibreELEC内核文件 │ └── root <- 可选特殊目录(内容会复制到TFTP根目录,适用于Raspberry Pi) │ ├── bootcode.bin <- Raspberry Pi必需的根目录文件 │ └── your-rpi4-serial <- 按设备序列号的启动文件目录(详见RPi网络启动文档) │ ├── start.elf │ └── ... │ └── syslinux <- 预填充的Syslinux文件(无需修改) ├── pxelinux.0 <- BIOS启动加载器(传统PXE客户端使用,DHCP需指向"syslinux/pxelinux.0") ├── efi64 │ └── syslinux.efi <- UEFI 64位启动加载器(客户端需指向"syslinux/efi64/syslinux.efi",注意:UEFI+Syslinux可能存在传输速度慢等问题) ├── boot -> ../boot <- 指向boot目录的符号链接 ├── pxelinux.cfg -> ../pxelinux.cfg <- 指向pxelinux.cfg目录的符号链接 └── ...
创建自定义pxelinux.cfg/default文件,示例内容如下:
DEFAULT menu.c32 PROMPT 0 TIMEOUT 100 ONTIMEOUT local MENU TITLE 主菜单 LABEL libreelec MENU LABEL LibreELEC kernel boot/libreelec/KERNEL append <在此插入启动参数> LABEL local MENU LABEL 从本地磁盘启动 LOCALBOOT 0
在部分场景中,TFTP可能速度缓慢或不稳定,此时可使用HTTP传输启动文件。需在kernel和append参数中指定HTTP服务器地址,示例:
kernel [***] append initrd=[***] <其他启动参数>
源码仓库的docker-compose.yml中包含一个注释掉的nginx服务示例,可用于通过HTTP提供启动文件。
建议参考源码仓库中的docker-compose.yml获取完整配置。典型配置需包含TFTP端口映射(UDP 69)、/tftpboot/boot和/tftpboot/pxelinux.cfg目录的挂载(用于自定义启动文件和配置),以及权限能力限制。
docker run -d \ --name tftpd \ --cap-drop=ALL \ --cap-add=NET_BIND_SERVICE \ -p 69:69/udp \ -v /path/to/your/boot:/tftpboot/boot \ -v /path/to/your/pxelinux.cfg:/tftpboot/pxelinux.cfg \ registry.gitlab.com/kalaksi-containers/tftpd:latest
欢迎通过GitHub仓库提交贡献,包括问题反馈、代码改进等。
版权所有 (c) 2018 ***。许可证信息详见LICENSE。
与所有Docker镜像一样,构建后的镜像可能包含其他软件,这些软件可能受其他许可证约束(如基础发行版的软件及依赖项)。使用预构建镜像时,用户有责任确保其使用符合所有包含软件的相关许可证要求。
免费版仅支持 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429