v2fly / docker

docker build repo for v2fly
https://hub.docker.com/r/v2fly/v2fly-core
MIT License
727 stars 208 forks source link

创建docker容器报错 #12

Closed Weaxs closed 3 years ago

Weaxs commented 3 years ago

目前创建的命令是这样 docker run --name v2ray -v /etc/v2ray/config.json:/etc/v2ray/config.json:ro v2fly/v2fly-core

日志返回是 020-09-28T16:37:36.708822233Z V2Ray v4.29.0 (v2fly/155c0e07) dockerfly-amd64 (go1.15.2 linux/amd64) 2020-09-28T16:37:36.708852121Z A unified platform for anti-censorship. 2020-09-28T16:37:36.818175991Z 2020/09/28 16:37:36 [Info] v2ray.com/core/common/platform/ctlcmd: 2020-09-28T16:37:36.818204735Z v2ctl> Read config: /etc/v2ray/config.json 2020-09-28T16:37:36.905166281Z 2020/09/28 16:37:36 [Warning] v2ray.com/core: V2Ray v4.29.0 started

就...没太看出来哪有问题。这个docker接入有具体的教程么orz果然是用docker搭的人太少了吗

Weaxs commented 3 years ago

谢谢orz

kslr commented 3 years ago

一切正常

Weaxs commented 3 years ago

不好意思再问下,这个v2ray的容器怎么进入orz?就是我用docker exec -i 进容器报permission denied,不好意思,最近才上手docker(:з」∠)

kslr commented 3 years ago

那得看是谁 denied,试试 sudo dcoker

Weaxs commented 3 years ago

哦对之后面跟的目录是/bin,应该是目录denied,不过用/bin/bash目录进容器是没有此目录no such file or directory 这个是和这个容器有关系吗orz

kslr commented 3 years ago

sudo docker exec -ti name bash

Weaxs commented 3 years ago

好像还是不行... [root@ip-172-26-12-174 v2ray]# sudo docker exec -ti v2ray bash OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown [root@ip-172-26-12-174 v2ray]# sudo docker exec -ti v2ray /bash OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused "exec: \"/bash\": stat /bash: no such file or directory": unknown 谢谢哈hh没事我就是想确认下容器的config没问题,应该是没问题的,我看看是不是和nginx的配置不匹配

kslr commented 3 years ago

这个是 Alpine 打包的,大概没有bash

Weaxs commented 3 years ago

不好意思再问个问题,举例例子比如我v2ray config里面port是36363,然后v2ray和nginx都用docker两个容器启动。 第一个问题是,我创建的nginx容器是不是要映射一下端口(-p 36363:36363),因为nginx的conf里不会是代理路由到v2ray的36363端口吗? 第二个问题是,v2ray容器需不需要映射端口?不过不应该不能两个容器映射同一端口吧,我看他们别的v2ray的容器是没写端口映射的? 感谢orz

kslr commented 3 years ago

不同模式下答案不同,你应该看文档。 我建议使用 host

nJhEqnvK commented 3 years ago
  1. config.json:ro

这个:ro是啥情况?为什么需要挂read only?

  1. 第一个问题是,我创建的nginx容器是不是要映射一下端口(-p 36363:36363),因为nginx的conf里不会是代理路由到v2ray的36363端口吗?

docker bridge 下端口可以根据喜好自由映射, 比如对nginx做-p 443:443,再对v2ray做-p 36363:36363,nginx配置里设置转发到$(v2ray_container_ip):36363但是不建议这样,因为就经验而谈bridge下的网络性能十分有限,另外现在有VLESS了可以不用nginx监听443了

  1. 第二个问题是,v2ray容器需不需要映射端口?不过不应该不能两个容器映射同一端口吧,我看他们别的v2ray的容器是没写端口映射的?

后附个人的配置仅供参考:

docker run \
 -d \
 --cap-add=NET_ADMIN \
 --restart=always \
 --network host \
 -e V2RAY_LOCATION_CONFIG=/etc/v2ray \
 -e V2RAY_LOCATION_ASSET=/etc/v2ray \
 -e V2RAY_BUF_READV=enable \
 -v $(path_to_config):/etc/v2ray \
 -v $(path_to_logs):/var/log \
 --name v2ray \
 v2fly/v2fly-core
Weaxs commented 3 years ago

好的,我明白了orz感谢,我再去试试hh

Weaxs commented 3 years ago

感谢大佬们的解答,反馈一下 之后我去看了下 docker_compose 和 VLESS 可以了,但是我没有用VLESS监听443,还是用 nginx 监听443后反向代理到 v2ray

以下是我的docker-compose文件

version: "3.8"
services: 
    nginx: 
        image: nginx:latest
        restart: always
        # ports: 
        #    - "80:80"
        #    - "443:443"
        volumes: 
            - ./nginx/conf.d:/etc/nginx/conf.d
            - ./nginx/certs:/etc/nginx/certs
        network_mode: host
        container_name: nginx

    v2ray: 
        restart: always
        depends_on:
            - nginx
        image: v2fly/v2fly-core
        volumes: 
            - ./v2fly/config.json:/etc/v2ray/config.json
            # - ./nginx/certs:/etc/v2ray/certs
        network_mode: host
        container_name: v2ray

v2ray的 config.json 用的是下面这个:

https://github.com/v2fly/v2ray-examples/blob/master/VLESS-TCP-TLS-WS%20(recommended)/config_server.json

但是去掉了监听443的部分

以上。感谢orz @nJhEqnvK @kslr