Documentación offline Docker main
por @raupulus

DMR examples

main Documentación oficial Licencia Apache-2.0Descargado el 2026-09-15 Bundle .md (6.1 MB) ↓

En esta página

See some examples of complete workflows using Docker Model Runner.

Sample project#

You can now start building your generative AI application powered by Docker Model Runner.

If you want to try an existing GenAI application, follow these steps:

  1. Set up the sample app. Clone and run the following repository:

console $ git clone https://github.com/docker/hello-genai.git

  1. In your terminal, go to the hello-genai directory.

  2. Run run.sh to pull the chosen model and run the app.

  3. Open your app in the browser at the addresses specified in the repository README.

You see the GenAI app's interface where you can start typing your prompts.

You can now interact with your own GenAI app, powered by a local model. Try a few prompts and notice how fast the responses are — all running on your machine with Docker.

Use Model Runner in GitHub Actions#

Here is an example of how to use Model Runner as part of a GitHub workflow. The example installs Model Runner, tests the installation, pulls and runs a model, interacts with the model via the API, and deletes the model.

```yaml {title="dmr-run.yml", collapse=true} name: Docker Model Runner Example Workflow

permissions: contents: read

on: workflow_dispatch: inputs: test_model: description: 'Model to test with (default: ai/smollm2:360M-Q4_K_M)' required: false type: string default: 'ai/smollm2:360M-Q4_K_M'

jobs: dmr-test: runs-on: ubuntu-latest timeout-minutes: 30

steps:
  - name: Set up Docker
    uses: docker/setup-docker-action@{{% param "setup_docker_action_version" %}}

  - name: Install docker-model-plugin
    run: |
      echo "Installing docker-model-plugin..."
      # Add Docker's official GPG key:
      sudo apt-get update
      sudo apt-get install ca-certificates curl
      sudo install -m 0755 -d /etc/apt/keyrings
      sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
      sudo chmod a+r /etc/apt/keyrings/docker.asc

      # Add the repository to Apt sources:
      echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      sudo apt-get update
      sudo apt-get install -y docker-model-plugin

      echo "Installation completed successfully"

  - name: Test docker model version
    run: |
      echo "Testing docker model version command..."
      sudo docker model version

      # Verify the command returns successfully
      if [ $? -eq 0 ]; then
        echo "✅ docker model version command works correctly"
      else
        echo "❌ docker model version command failed"
        exit 1
      fi

  - name: Pull the provided model and run it
    run: |
      MODEL="${{ github.event.inputs.test_model || 'ai/smollm2:360M-Q4_K_M' }}"
      echo "Testing with model: $MODEL"

      # Test model pull
      echo "Pulling model..."
      sudo docker model pull "$MODEL"

      if [ $? -eq 0 ]; then
        echo "✅ Model pull successful"
      else
        echo "❌ Model pull failed"
        exit 1
      fi

      # Test basic model run (with timeout to avoid hanging)
      echo "Testing docker model run..."
      timeout 60s sudo docker model run "$MODEL" "Give me a fact about whales." || {
        exit_code=$?
        if [ $exit_code -eq 124 ]; then
          echo "✅ Model run test completed (timed out as expected for non-interactive test)"
        else
          echo "❌ Model run failed with exit code: $exit_code"
          exit 1
        fi
      }

  - name: Test API endpoint
    run: |
      MODEL="${{ github.event.inputs.test_model || 'ai/smollm2:360M-Q4_K_M' }}"
      echo "Testing API endpoint with model: $MODEL"

      # Test API call with curl
      echo "Testing API call..."
      RESPONSE=$(curl -s http://localhost:12434/engines/llama.cpp/v1/chat/completions \
        -H "Content-Type: application/json" \
        -d "{
            \"model\": \"$MODEL\",
            \"messages\": [
                {
                    \"role\": \"user\",
                    \"content\": \"Say hello\"
                }
            ],
            \"top_k\": 1,
            \"temperature\": 0
        }")

      if [ $? -eq 0 ]; then
        echo "✅ API call successful"
        echo "Response received: $RESPONSE"

        # Check if response contains "hello" (case-insensitive)
        if echo "$RESPONSE" | grep -qi "hello"; then
          echo "✅ Response contains 'hello' (case-insensitive)"
        else
          echo "❌ Response does not contain 'hello'"
          echo "Full response: $RESPONSE"
          exit 1
        fi
      else
        echo "❌ API call failed"
        exit 1
      fi

  - name: Test model cleanup
    run: |
      MODEL="${{ github.event.inputs.test_model || 'ai/smollm2:360M-Q4_K_M' }}"

      echo "Cleaning up test model..."
      sudo docker model rm "$MODEL" || echo "Model removal failed or model not found"

      # Verify model was removed
      echo "Verifying model cleanup..."
      sudo docker model ls

      echo "✅ Model cleanup completed"

  - name: Report success
    if: success()
    run: |
      echo "🎉 Docker Model Runner daily health check completed successfully!"
      echo "All tests passed:"
      echo "  ✅ docker-model-plugin installation successful"
      echo "  ✅ docker model version command working"
      echo "  ✅ Model pull and run operations successful"
      echo "  ✅ API endpoint operations successful"
      echo "  ✅ Cleanup operations successful"

```