@@ -5,49 +5,16 @@ import (
55 "encoding/json"
66 "fmt"
77 "io"
8- "os"
98
109 "github.com/docker/docker/api/types/image"
1110 "github.com/docker/docker/client"
1211 "github.com/docker/docker/pkg/jsonmessage"
1312 gpupkg "github.com/docker/model-runner/cmd/cli/pkg/gpu"
1413)
1514
16- const (
17- // ControllerImage is the image used for the controller container.
18- ControllerImage = "docker/model-runner"
19- // defaultControllerImageTagCPU is the image tag used for the controller container
20- // when running with the CPU backend.
21- defaultControllerImageTagCPU = "latest"
22- // defaultControllerImageTagCUDA is the image tag used for the controller container
23- // when running with the CUDA GPU backend.
24- defaultControllerImageTagCUDA = "latest-cuda"
25- )
26-
27- func controllerImageTagCPU () string {
28- if version , ok := os .LookupEnv ("MODEL_RUNNER_CONTROLLER_VERSION" ); ok && version != "" {
29- return version
30- }
31- return defaultControllerImageTagCPU
32- }
33-
34- func controllerImageTagCUDA () string {
35- if version , ok := os .LookupEnv ("MODEL_RUNNER_CONTROLLER_VERSION" ); ok && version != "" {
36- return version + "-cuda"
37- }
38- return defaultControllerImageTagCUDA
39- }
40-
4115// EnsureControllerImage ensures that the controller container image is pulled.
4216func EnsureControllerImage (ctx context.Context , dockerClient client.ImageAPIClient , gpu gpupkg.GPUSupport , printer StatusPrinter ) error {
43- // Determine the target image.
44- var imageName string
45- switch gpu {
46- case gpupkg .GPUSupportCUDA :
47- imageName = ControllerImage + ":" + controllerImageTagCUDA ()
48- default :
49- imageName = ControllerImage + ":" + controllerImageTagCPU ()
50- }
17+ imageName := controllerImageName (gpu )
5118
5219 // Perform the pull.
5320 out , err := dockerClient .ImagePull (ctx , imageName , image.PullOptions {})
@@ -80,13 +47,13 @@ func EnsureControllerImage(ctx context.Context, dockerClient client.ImageAPIClie
8047// PruneControllerImages removes any unused controller container images.
8148func PruneControllerImages (ctx context.Context , dockerClient client.ImageAPIClient , printer StatusPrinter ) error {
8249 // Remove the standard image, if present.
83- imageNameCPU := ControllerImage + ":" + controllerImageTagCPU ( )
50+ imageNameCPU := fmtControllerImageName ( ControllerImage , controllerImageVersion (), "" )
8451 if _ , err := dockerClient .ImageRemove (ctx , imageNameCPU , image.RemoveOptions {}); err == nil {
8552 printer .Println ("Removed image" , imageNameCPU )
8653 }
8754
8855 // Remove the CUDA GPU image, if present.
89- imageNameCUDA := ControllerImage + ":" + controllerImageTagCUDA ( )
56+ imageNameCUDA := fmtControllerImageName ( ControllerImage , controllerImageVersion (), "cuda" )
9057 if _ , err := dockerClient .ImageRemove (ctx , imageNameCUDA , image.RemoveOptions {}); err == nil {
9158 printer .Println ("Removed image" , imageNameCUDA )
9259 }
0 commit comments