Deploying V2Ray with Docker


🤖This article was translated by AI (LLM). There may be errors or inaccuracies. For the original content, please refer to the original version
🌐本文还有其他语言版本:源站 / 简体中文

There are limited Chinese resources on Docker deployment for V2Ray. Here’s some reference material.

Installing Docker Service

  1. Install Docker using package manager (using pacman as example): sudo pacman -S docker
  2. Obtain Docker operation permissions (refer to Docker Wiki):
    sudo groupadd docker
    sudo usermod -aG docker $USER
  3. Start Docker service:
    sudo systemctl enable docker
    sudo systemctl start docker

Installing V2Ray (Docker Container)

Note: v2ray/official is deprecated.

  1. Download V2Ray container:
    docker pull v2fly/v2fly-core

V2Ray Configuration File

Recommended location for V2Ray config file: /home/$USER/.config/v2ray/config.json (can be elsewhere)

  • V2Ray inbound rules should point to 0.0.0.0 (as shown below), with default port set to 1080
"inbounds": [
    {
        "port": 1080,
        "listen": "0.0.0.0",
        "protocol": "socks",
        "sniffing": {
            "enabled": true,
            "destOverride": [
                "http",
                "tls"
            ]
        }
    }
],
  • V2Ray Multi-protocol Proxy

V2Ray supports multiple inbound protocols. References:

  1. V2Ray wiki
  2. GitHub issues

Example with HTTP and SOCKS5:

"inbounds": [
    {
        "port": 1080,
        "listen": "0.0.0.0",
        "protocol": "socks",
        "sniffing": {
            "enabled": true,
            "destOverride": [
                "http",
                "tls"
            ]
        }
    },
    {
        "listen": "0.0.0.0",
        "port": 8118,
        "protocol": "http",
        "settings": {
            "timeout": 0,
            "allowTransparent": false,
            "userLevel": 0
        }
    }
],

Running V2Ray Container

  • Single protocol single port
docker run -dit -d \
   --restart unless-stopped \  # Auto-start container on boot
   --name v2ray \  # Set container name
   -v /home/xz/.config/v2ray/config.json:/etc/v2ray/config.json \  # File mapping
   -p 127.0.0.1:1080:1080 \  # Network port mapping to localhost, can map to other IP if needed
   v2fly/v2fly-core \
   v2ray -config=/etc/v2ray/config.json
  • Multi-protocol multi-port (example with HTTP and SOCKS5 above)
docker run -dit -d \
   --restart unless-stopped \
   --name v2ray \
   -v /home/xz/.config/v2ray/config.json:/etc/v2ray/config.json \
   -p 127.0.0.1:1080:1080 \
   -p 127.0.0.1:8118:8118 \
   v2fly/v2fly-core \
   v2ray -config=/etc/v2ray/config.json

Installing Docker Container Auto-update Service (Optional)

docker pull v2tec/watchtower
  • Run Watchtower
docker run -d \
  --name watchtower \
  -v /var/run/docker.sock:/var/run/docker.sock \
  v2tec/watchtower