Docker部署Xray指南:零基础也能快速搭建代理服务
开始前你需要准备什么
在动手用 Docker 部署 Xray 之前,先确认三件事:
- 一台 Linux 服务器(本文以 Ubuntu 22.04 为例,CentOS 操作基本一致)。
- 已经安装好 Docker。如果还没装,在终端逐条执行下面两行:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
装好后运行 sudo docker version 确认信息正常。
- 一个域名并解析到服务器 IP(如果你需要 TLS 加密,推荐先准备好,本文示例会加一条注释)。
拉取 Xray 镜像并准备配置文件
首先从 Docker Hub 拉取 Xray 官方镜像:
sudo docker pull xray/xray
接着在服务器上创建一个工作目录,用来存放 Xray 的配置文件和日志:
mkdir -p ~/xray && cd ~/xray
新建配置文件 config.json,用 vim 或 nano 写入以下内容(这是一个最简的 VMess + WebSocket 配置,适合初学者快速跑通):
{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"port": 8080,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "你的-uuid-这里替换",
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/ray"
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
UUID 生成:可以在终端执行 cat /proc/sys/kernel/random/uuid 来获得一个随机 ID。
启动 Xray 容器
在 ~/xray 目录下执行启动命令:
sudo docker run -d --name xray \
-p 8080:8080 \
-v $(pwd)/config.json:/etc/xray/config.json \
xray/xray:latest
分解说明:
-d:后台运行。--name xray:给容器取个名字方便管理。-p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口。-v:把刚才写的配置文件挂载进容器。
如果服务器有防火墙(如 ufw 或 iptables),记得放行 8080 端口。
Ubuntu 下用:
sudo ufw allow 8080
验证服务是否正常运行
容器启动后,用以下命令查看状态:
sudo docker ps -a
看到 xray 容器的 STATUS 为 Up 就代表已启动。
接着查看日志确认无报错:
sudo docker logs xray
正常应该能看到类似 Xray 1.8.0 started 的信息。
然后使用客户端(如 v2rayN、Shadowrocket)填入服务器 IP、端口 8080、UUID、WebSocket 路径 /ray 进行连接测试。
如果连不上,先检查服务器防火墙和云服务商的安全组是否放开端口。
常见问题与避坑说明
- 镜像拉取失败:国内服务器建议给 Docker 配置镜像加速器,或者使用
docker pull ghcr.io/xtls/xray-core替代。 - 配置文件格式错误:Xray 对 JSON 的合法性要求严格,推荐用
jq . config.json检查格式;如果提示 unexpected token,重新检查括号和逗号。 - 容器闪退:通常是因为配置文件写错或端口被占用。先用
sudo docker logs xray看最后几行报错,再对照修改。 - 客户端连不上但服务器日志正常:检查路径
/ray是否一致,或者尝试将协议改为 VMess over TCP 排除 WebSocket 问题。 - 如果想用 TLS:需要先申请 SSL 证书(推荐 acme.sh),然后修改 inbound 的 streamSettings 补充 tls 配置,并将端口改为 443。
总结
Docker 部署 Xray 的最大优势是环境隔离、迁移简单。
先按照本文的步骤完整走一遍,确认服务 Running 之后再根据自己的需求调整 inbound 协议、加密方式和端口。
遇到异常时优先回看日志和防火墙设置,大多数问题都能快速定位。
如果你是宝塔面板用户,也可以在“Docker”模块中手动拉取镜像、创建容器,挂载配置文件的逻辑完全一样。
只要把本地路径改为宝塔面板的文件路径即可。