该Docker容器允许您在本地网络通过PXE启动多种安装程序和工具,无需繁琐配置DHCP和TFTP服务器,其基于优秀的netboot.xyz项目实现。
它提供ProxyDHCP服务,因此对于大多数客户端,网络中现有DHCP服务器(如家用路由器)可继续正常分配IP地址。但当PXE客户端发出DHCP请求时,该容器会响应并将自身声明为TFTP网络启动目标。它通过dnsmasq运行一个极简DHCP服务器,基于linuxserver/docker-netboot.xyz容器实现。
创建此容器的原因是:当需要运行Linux安装程序、memtest、Clonezilla等工具时,总是找不到可用的U盘,但又无需永久运行DHCP和TFTP服务器——大多数情况下路由器已足够满足需求。
在Linux上可运行如下命令:
bashdocker run --net=host --cap-add=NET_ADMIN -e DHCP_RANGE_START=192.168.0.1 samdbmg/dhcp-netboot.xyz
请将DHCP_RANGE_START中的IP地址调整为您网络中的第一个地址。dnsmasq会根据本地网络设置自动确定合适的子网掩码。
为使其正常工作,容器需要对目标网络具有较低级别的访问权限(而非Docker内部桥接网络),因此需要--net=host参数。它需要在系统上开放多个端口以充当DHCP服务器,同时还需要Web服务器来提供各种菜单。如果这不实用(例如,这些端口已被占用),请尝试选项2。
注意,如果系统运行防火墙,需允许UDP流量通过端口67(DHCP)、69(TFTP)和4011(PXE),以及TCP端口80(内置Web服务器)。对于ufw防火墙,可尝试:
bashsudo ufw allow proto udp from any to any port 67 sudo ufw allow proto udp from any to any port 69 sudo ufw allow proto udp from any to any port 4011 sudo ufw allow proto tcp from any to any port 80
使用完毕后别忘了移除这些规则!
Docker Compose支持ipvlan网络驱动,可创建具有独立IP地址的虚拟接口,在某些情况下更易用。仓库中提供了docker-compose.yml文件用于此方式运行。
需指定网络中合适的IP地址、接口和IP范围。运行类似如下命令(根据网络替换地址):
bashexport INTERFACE=`ip route | awk '/default/ { print $5 }'` export GATEWAY=`ip route | awk '/default/ { print $3 }'` export SUBNET=192.168.0.1 export CONTAINER_IP=192.168.0.250 docker-compose up
使用完毕后,执行docker-compose down清理。
在Mac和Windows上,Docker通常在后台VM中运行,导致Docker主机不在目标网络中,无法直接提供DHCP服务。但可通过仓库提供的Vagrantfile在Virtualbox VM中运行容器:
bashDHCP_RANGE_START=192.168.0.1 vagrant up netboot vagrant ssh netboot -c 'docker logs -f samdbmg-dhcp-netboot.xyz'
注意:可能会提示选择VM连接的网络,请选择与提供的IP地址匹配的网络。
此命令会启动Ubuntu VM,安装Docker并运行容器。第二条命令通过SSH进入VM并查看容器日志。在Windows上使用Hyper-V作为后端时,需通过管理员命令提示符运行。
无论通过哪种方式运行容器,在网络中启动另一台设备,选择"LAN启动"、"PXE启动"或"网络启动"(具体名称因设备而异)。设备将显示包含多种 live 系统、安装程序和工具的菜单,这些内容将根据需要从互联网下载。
注意:在EFI系统上,可能需要按p键从DHCP代理启动(详见[***]
仓库中提供Vagrantfile,可演示启动由Vagrant管理的Virtualbox VM,桥接到主机网络并配置为PXE启动。运行./run-demo.sh 192.168.0.1(替换为网络IP),将启动Docker容器并运行Vagrant虚拟机。
注意:可能会提示选择VM连接的网络,请选择与提供的IP地址匹配的网络。
演示效果类似下图(更高质量版本见***): !演示屏幕录制
注意:可能需要Virtualbox扩展包才能使PXE启动正常工作,VM默认配置3GB内存以支持live系统ISO下载。
执行如下命令即可本地构建镜像:
bashdocker build .
企业级网络设备通常有防止未授权DHCP服务器的保护措施,可能导致此容器无法在企业/学校网络中工作。
在仓库提交Issue,会尽快回复。
欢迎提交PR!
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 等镜像仓库
无需登录使用专属域名加速