Repository: ggml-org/llama.cpp
Pull request: vulkan.Dockerfile: install vulkan SDK using tarball

*Make sure to read the [contributing guidelines](https://github.com/ggml-org/llama.cpp/blob/master/CONTRIBUTING.md) before submitting a PR*

I noticed the following deprecation notice on https://packages.lunarg.com/

> Deprecation Notice: LunarG will discontinue updating the Ubuntu Packages to newer SDK releases after the month of May, 2025. The Linux tarball should be used instead to keep up to date with Vulkan SDK releases.

This PR updates `vulkan.Dockerfile` to install the Vulkan SDK from the tarball.

### Testing Done

```bash
❯ docker build -t local/llama.cpp:server-vulkan --target server -f .devops/vulkan.Dockerfile .
[+] Building 2599.0s (18/18) FINISHED                                                                                                docker:default
 => [internal] load build definition from vulkan.Dockerfile                                                                                    0.0s
 => => transferring dockerfile: 2.91kB                                                                                                         0.0s
 => [internal] load .dockerignore                                                                                                              0.0s
 => => transferring context: 35B                                                                                                               0.0s
 => [internal] load metadata for docker.io/library/ubuntu:24.04                                                                                0.0s
 => [build 1/9] FROM docker.io/library/ubuntu:24.04                                                                                            0.0s
 => [internal] load build context                                                                                                              0.4s
 => => transferring context: 3.95MB                                                                                                            0.4s
 => CACHED [build 2/9] RUN apt update && apt install -y git build-essential cmake wget xz-utils                                                0.0s
 => [build 3/9] RUN ARCH=$(uname -m) &&     wget -qO /tmp/vulkan-sdk.tar.xz https://sdk.lunarg.com/sdk/download/1.4.321.1/linux/vulkan-sdk  2314.6s
 => [build 4/9] RUN apt install -y libcurl4-openssl-dev curl     libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev                            47.6s
 => [build 5/9] WORKDIR /app                                                                                                                   0.0s 
 => [build 6/9] COPY . .                                                                                                                       1.2s 
 => [build 7/9] RUN cmake -B build -DGGML_NATIVE=OFF -DGGML_VULKAN=1  -DLLAMA_BUILD_TESTS=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=  199.1s 
 => [build 8/9] RUN mkdir -p /app/lib &&     find build -name "*.so" -exec cp {} /app/lib ;                                                    0.5s 
 => [build 9/9] RUN mkdir -p /app/full     && cp build/bin/* /app/full     && cp *.py /app/full     && cp -r gguf-py /app/full     && cp -r r  0.5s 
 => CACHED [base 2/3] RUN apt-get update     && apt-get install -y libgomp1 curl libvulkan-dev     && apt autoremove -y     && apt clean -y    0.0s 
 => [base 3/3] COPY --from=build /app/lib/ /app                                                                                                0.1s
 => [server 1/2] COPY --from=build /app/full/llama-server /app                                                                                 0.0s
 => [server 2/2] WORKDIR /app                                                                                                                  0.0s
 => exporting to image                                                                                                                         0.2s
 => => exporting layers                                                                                                                        0.2s
 => => writing image sha256:857b82d66ad8dd1cff7aaabad87263ccb8fe6b2d46543a8d76f5de322ff8f838                                                   0.0s
 => => naming to docker.io/local/llama.cpp:server-vulkan    
```

Changed files:
filename: .devops/vulkan.Dockerfile
patch: @@ -2,14 +2,30 @@ ARG UBUNTU_VERSION=24.04
 
 FROM ubuntu:$UBUNTU_VERSION AS build
 
-# Install build tools
-RUN apt update && apt install -y git build-essential cmake wget
+# Ref: https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html
 
-# Install Vulkan SDK and cURL
-RUN wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | apt-key add - && \
-    wget -qO /etc/apt/sources.list.d/lunarg-vulkan-noble.list https://packages.lunarg.com/vulkan/lunarg-vulkan-noble.list && \
-    apt update -y && \
-    apt-get install -y vulkan-sdk libcurl4-openssl-dev curl
+# Install build tools
+RUN apt update && apt install -y git build-essential cmake wget xz-utils
+
+# Install Vulkan SDK
+ARG VULKAN_VERSION=1.4.321.1
+RUN ARCH=$(uname -m) && \
+    wget -qO /tmp/vulkan-sdk.tar.xz https://sdk.lunarg.com/sdk/download/${VULKAN_VERSION}/linux/vulkan-sdk-linux-${ARCH}-${VULKAN_VERSION}.tar.xz && \
+    mkdir -p /opt/vulkan && \
+    tar -xf /tmp/vulkan-sdk.tar.xz -C /tmp --strip-components=1 && \
+    mv /tmp/${ARCH}/* /opt/vulkan/ && \
+    rm -rf /tmp/*
+
+# Install cURL and Vulkan SDK dependencies
+RUN apt install -y libcurl4-openssl-dev curl \
+    libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev
+
+# Set environment variables
+ENV VULKAN_SDK=/opt/vulkan
+ENV PATH=$VULKAN_SDK/bin:$PATH
+ENV LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH
+ENV CMAKE_PREFIX_PATH=$VULKAN_SDK:$CMAKE_PREFIX_PATH
+ENV PKG_CONFIG_PATH=$VULKAN_SDK/lib/pkgconfig:$PKG_CONFIG_PATH
 
 # Build it
 WORKDIR /app