最近在测试v2rayA的docker部署,发现官方文档对切换内核的描述不是很清晰,只是说了删除v2fly就会自动切换到xray,但是dive了一下官方docker镜像,发现并没有xray内核,遂研究了一下官方的dockerfile文件,发现使用了多阶段构建 (multistage builds),只需要使用COPY 命令就可以从其他已有镜像中拿取镜像中的文件。
构建包含xray内核的v2rayA镜像
Dockerfile.v2rayA
1 2 3 |
FROM mzz2017/v2raya COPY --from=teddysun/xray:latest /usr/bin/xray /usr/bin/xray ENTRYPOINT ["v2raya" "--mode=universal" "--webdir=/etc/v2raya-web"] |
这里使用了COPY –from命令将xray官方镜像中的xray执行文件拷贝到v2raya镜像内的相同路径
login一下docker
1 |
docker login |
构建并推送镜像build image
1 |
curl http://us.minirplus.com/Dockerfile.v2rayA | docker buildx build --push --platform linux/amd64,linux/arm64,linux/arm/v7 -t minirplus/v2raya -f - . |
这里使用curl直接从URL拉取Dockerfile构建镜像并推送至docker hub
使用镜像
准备工作
管理port,这里假设2021
如果有ufw
1 |
ufw allow 2021 |
创建测试容器
1 |
docker run -it --rm --privileged --network host -v /root/v2raya:/etc/v2raya -e V2RAYA_ADDRESS="0.0.0.0:2021" -e V2RAYA_V2RAY_BIN="/usr/bin/xray" --name v2raya minirplus/v2raya |
注意这里V2RAYA_ADDRESS用于指定管理端口,V2RAYA_V2RAY_BIN用于指定xray内核路径,–network host用于动态映射端口,不再需要在run里面指定端口,但是和-P指定端口不一样,这里不会自动在防火墙上打洞,需要添加ufw才可以从外网访问。
看到如下内容说明运行正常
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
2021/08/06 15:15:24 pre.go:102: [Info] init DB 2021/08/06 15:15:25 pre.go:251: [info] network is connected V2RayLocationAsset is /usr/local/share/v2ray V2Ray binary is /usr/bin/xray v2rayA working directory is /root Version: 1.4.3 Starting... v2rayA is listening at http://127.0.0.1:2021 v2rayA is listening at http://172.21.18.216:2021 v2rayA is listening at http://192.168.2.27:2021 v2rayA is listening at http://172.17.0.1:2021 v2rayA is listening at http://[::1]:2021 v2rayA is listening at http://[fe80::216:3eff:fe04:b053]:2021 v2rayA is listening at http://[fe80::42:73ff:fee0:6745]:2021 v2rayA is listening at http://[fe80::3ce7:e3ff:fe26:f986]:2021 |
获取访问地址
1 |
echo -e "http://$( curl -s https://api.ipify.org ):2021" |
登录测试功能一切正常后
按Ctrl+C退出容器
重新创建生产容器
1 |
docker run -d --restart always --privileged --network host -v /root/v2raya:/etc/v2raya -e V2RAYA_ADDRESS="0.0.0.0:2021" -e V2RAYA_V2RAY_BIN="/usr/bin/xray" --name v2raya minirplus/v2raya |
All Done!
One comment