
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
ufw-docker是一个用于解决Docker与UFW(Ubuntu上流行的iptables前端)之间安全冲突的解决方案。当Docker安装后,其默认网络配置会绕过UFW防火墙规则,导致容器通过-p选项发布的端口可被外部网络访问,即使UFW已配置阻止该端口。本方案无需禁用Docker的iptables功能,通过修改UFW配置和提供专用工具,实现对Docker容器端口的安全管控,确保公共网络仅能访问明确允许的端口,同时保持容器间、内部网络的正常通信。
-p 0.0.0.0:8080:80)。ufw route)管理容器端口访问权限,无需额外工具。ufw-docker工具,支持Swarm模式下的服务端口管控。/etc/ufw/after.rules,Docker配置保持默认。ufw route命令)和Docker Swarm模式。ufw route命令)。--iptables=false修改)。若已尝试过其他解决方案,需先恢复默认配置:
/etc/docker/daemon.json中"iptables": false等禁用iptables的配置,重启Docker:
bashsudo systemctl restart docker
FORWARD链默认策略为DROP(而非ACCEPT)。/etc/ufw/after.rules中与Docker相关的手动添加规则。通过修改UFW配置文件实现对Docker端口的管控:
编辑/etc/ufw/after.rules,在文件末尾添加以下规则:
bash# BEGIN UFW AND DOCKER *filter :ufw-user-forward - [0:0] :ufw-docker-logging-deny - [0:0] :DOCKER-USER - [0:0] -A DOCKER-USER -j ufw-user-forward -A DOCKER-USER -j RETURN -s 10.0.0.0/8 -A DOCKER-USER -j RETURN -s 172.16.0.0/12 -A DOCKER-USER -j RETURN -s 192.168.0.0/16 -A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN -A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16 -A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8 -A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8 -A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12 -A DOCKER-USER -j RETURN -A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] " -A ufw-docker-logging-deny -j DROP COMMIT # END UFW AND DOCKER
重启UFW使规则生效:
bashsudo systemctl restart ufw
注意:若规则未生效,尝试重启服务器。
通过ufw route命令允许/拒绝外部访问容器端口(适用于支持ufw route的Ubuntu版本)。
允许外部访问容器端口
bashufw route allow proto tcp from any to any port 80
bashufw route allow proto tcp from any to 172.17.0.2 port 80
bashufw route allow proto udp from any to any port 53
拒绝外部访问容器端口
bashufw route deny from 172.17.0.9 to any
ufw-docker是简化容器端口防火墙规则管理的脚本,支持Docker Swarm模式。
安装ufw-docker
bashsudo wget -O /usr/local/bin/ufw-docker \ https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker sudo chmod +x /usr/local/bin/ufw-docker
初始化UFW配置
bashufw-docker install
该命令会备份
/etc/ufw/after.rules并添加必要规则。
基本使用示例
httpd的80端口):
bashufw-docker allow httpd 80
httpd的443/tcp端口):
bashufw-docker allow httpd 443/tcp
httpd的所有规则):
bashufw-docker delete allow httpd
Docker Swarm模式使用
web的80端口):
bashufw-docker service allow web 80
bashufw-docker service delete allow web
-A DOCKER-USER -j ufw-user-forward将Docker流量纳入UFW管理,支持通过ufw route命令统一管控。ufw route),可单独管控容器端口,不影响主机端口。在Swarm集群中,ufw-docker需在管理节点部署,并在所有节点修改UFW配置:
ufw-docker install。web的80端口为例):
bash# 创建服务 docker service create --name web --publish 8080:80 httpd:alpine # 允许外部访问服务的80端口 ufw-docker service allow web 80
bashufw-docker service delete allow web
bashdocker run -d --name test-httpd -p 8080:80 httpd:alpine
http://<服务器IP>:8080。ufw route allow proto tcp from any to any port 80后,外部可访问该端口。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务