Deploying NeuVector Container Security via Docker Compose

Deploying the NeuVector runtime security platform on Docker infrastructure requires precise configuration of Linux capabilities, namespace sharing, and host-level mounts. The following deployment strategy separates the management plane from the host enforcement agents to ensure clean architecture and scalable operations.

Management Controller & Scanner Configuration

Create a dedicated compose file for the central management controller and image scanner. This stack handles policy distribution, vulnerability scanning, and web console access. The configuration uses modern long-form volume syntax for explicit read-only bindings and isolates traffic on a dedicated internal bridge network.

services:
  nv_manager:
    image: neuvector/allinone:latest
    container_name: nv-ctrl-node
    restart: unless-stopped
    pid: host
    cap_add:
      - SYS_ADMIN
      - NET_ADMIN
      - SYS_PTRACE
      - IPC_LOCK
    security_opt:
      - apparmor:unconfined
      - seccomp:unconfined
      - label:disable
    environment:
      CLUSTER_JOIN_ADDR: "10.0.0.50"
      NV_PLATFORM_INFO: "platform=Docker"
    ports:
      - "18300:18300"
      - "18301:18301"
      - "18400:18400"
      - "18401:18401"
      - "18301:18301/udp"
      - "8443:8443"
    networks:
      - nv_internal
    volumes:
      - type: bind
        source: /lib/modules
        target: /lib/modules
        read_only: true
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
        read_only: true
      - type: bind
        source: /proc
        target: /host/proc
        read_only: true
      - type: bind
        source: /sys/fs/cgroup
        target: /host/cgroup
        read_only: true
      - nv_persist:/var/neuvector

  nv_scanner:
    image: neuvector/scanner:latest
    container_name: nv-scanner-node
    restart: unless-stopped
    environment:
      CLUSTER_JOIN_ADDR: "10.0.0.50"
    ports:
      - "18402:18402"
    networks:
      - nv_internal
    volumes:
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
        read_only: true

volumes:
  nv_persist:
    driver: local

networks:
  nv_internal:
    driver: bridge

Replace the placeholder IP in CLUSTER_JOIN_ADDR with the actual IPv4 address of the management host. The controller exposes the HTTPS console on port 8443 and reserves UDP/TCP channels for inter-node coordination.

Host Agent Deployment

Every compute node requires an enforcer container to monitor runtime behavior, enforce network policies, and intercept system calls. Deploy this agent using a separate compose definition on each worker machine. The agent communicates upstream to the controller established in the previous section.

services:
  nv_agent:
    image: neuvector/enforcer:latest
    container_name: nv-enforcer-host
    restart: unless-stopped
    pid: host
    cap_add:
      - SYS_ADMIN
      - NET_ADMIN
      - SYS_PTRACE
      - IPC_LOCK
    security_opt:
      - apparmor:unconfined
      - seccomp:unconfined
      - label:disable
    environment:
      CLUSTER_JOIN_ADDR: "10.0.0.50"
      NV_PLATFORM_INFO: "platform=Docker"
    ports:
      - "18301:18301"
      - "18401:18401"
      - "18301:18301/udp"
    networks:
      - nv_internal
    volumes:
      - type: bind
        source: /lib/modules
        target: /lib/modules
        read_only: true
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
        read_only: true
      - type: bind
        source: /proc
        target: /host/proc
        read_only: true
      - type: bind
        source: /sys/fs/cgroup/
        target: /host/cgroup/
        read_only: true

networks:
  nv_internal:
    driver: bridge

Ensure the CLUSTER_JOIN_ADDR value precisely matches the management node's IP. The enforcer leverages the host PID namespace and specific capabilities to inject kernel modules and attach eBPF prrobes for real-time threat detection.

Service Orchestration

Initialize the management stack by executing the following command in the directory containing the controller configuration:

docker compose -f compose-ctrl.yaml up -d

Deploy the enforcement agents across your infrastructure using the corresponding file:

docker compose -f compose-agent.yaml up -d

Validate container health, state transitions, and port bindings on each node:

docker compose -f compose-ctrl.yaml ps
docker compose -f compose-agent.yaml ps

Allow approximately 30 to 60 seconds for the kernel modules to compile and load, after which the enforcer agents will automatically register with the central controller.

Web Console Access

Access the management interface via a secure HTTPS connection using the manager's IP adress:

https://<manager_ip>:8443/

Authenticate using the default credantials:

  • Username: admin
  • Password: admin

Upon initial login, update the default credentials and configure role-based access control policies to align with organizational security baselines.

Tags: neuvector docker-compose container-security runtime-protection kernel-modules

Posted on Mon, 14 Sep 2026 16:38:01 +0000 by Anim9or