Dockerfile.rdma-simulation 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # RDMA Simulation Container with Soft-RoCE (RXE)
  2. # This container enables software RDMA over regular Ethernet
  3. FROM ubuntu:22.04
  4. # Install RDMA and networking tools
  5. RUN apt-get update && apt-get install -y \
  6. # System utilities
  7. sudo \
  8. # RDMA core libraries
  9. libibverbs1 \
  10. libibverbs-dev \
  11. librdmacm1 \
  12. librdmacm-dev \
  13. rdma-core \
  14. ibverbs-utils \
  15. infiniband-diags \
  16. # Network tools
  17. iproute2 \
  18. iputils-ping \
  19. net-tools \
  20. # Build tools
  21. build-essential \
  22. pkg-config \
  23. cmake \
  24. # UCX dependencies
  25. libnuma1 \
  26. libnuma-dev \
  27. # UCX library (pre-built) - try to install but don't fail if not available
  28. # libucx0 \
  29. # libucx-dev \
  30. # Debugging tools
  31. strace \
  32. gdb \
  33. valgrind \
  34. # Utilities
  35. curl \
  36. wget \
  37. vim \
  38. htop \
  39. && rm -rf /var/lib/apt/lists/*
  40. # Try to install UCX tools (optional, may not be available in all repositories)
  41. RUN apt-get update && \
  42. (apt-get install -y ucx-tools || echo "UCX tools not available in repository") && \
  43. rm -rf /var/lib/apt/lists/*
  44. # Create rdmauser for security (avoid conflict with system rdma group)
  45. RUN useradd -m -s /bin/bash -G sudo,rdma rdmauser && \
  46. echo "rdmauser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
  47. # Create directories for RDMA setup
  48. RUN mkdir -p /opt/rdma-sim /var/log/rdma
  49. # Copy RDMA simulation scripts
  50. COPY docker/scripts/setup-soft-roce.sh /opt/rdma-sim/
  51. COPY docker/scripts/test-rdma.sh /opt/rdma-sim/
  52. COPY docker/scripts/ucx-info.sh /opt/rdma-sim/
  53. # Make scripts executable
  54. RUN chmod +x /opt/rdma-sim/*.sh
  55. # Set working directory
  56. WORKDIR /opt/rdma-sim
  57. # Switch to rdmauser
  58. USER rdmauser
  59. # Default command
  60. CMD ["/bin/bash"]
  61. # Health check for RDMA devices
  62. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  63. CMD /opt/rdma-sim/test-rdma.sh || exit 1
  64. # Expose common RDMA ports
  65. EXPOSE 18515 4791 4792