Skip to content

Commit

Permalink
Change docker context to default in MacOS during machine start
Browse files Browse the repository at this point in the history
Fixes: #1654

Signed-off-by: vyasgun <vyasgun20@gmail.com>
  • Loading branch information
vyasgun committed Aug 8, 2023
1 parent 62399c7 commit 4a5582b
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions cmd/podman/machine/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ package machine

import (
"fmt"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"

"github.com/containers/podman/v4/cmd/podman/registry"
"github.com/containers/podman/v4/libpod/events"
Expand Down Expand Up @@ -79,7 +84,36 @@ func start(_ *cobra.Command, args []string) error {
if err := vm.Start(vmName, startOpts); err != nil {
return err
}
if err := changeDockerContext(); err != nil {
fmt.Fprintf(os.Stderr, "Failed to change docker context to default. Error: %v\n", err)
} else {
fmt.Fprintf(os.Stderr, "Docker context has been set to default\n")
}
fmt.Printf("Machine %q started successfully\n", vmName)
newMachineEvent(events.Start, events.Event{Name: vmName})
return nil
}

func changeDockerContext() error {
if runtime.GOOS != "darwin" {
return nil
}
pathList := strings.Split(os.Getenv("PATH"), ":")
var dockerBinaryPath string
for _, path := range pathList {
dockerPath := filepath.Join(path, "docker")
if info, err := os.Stat(dockerPath); err == nil && info.Mode().IsRegular() {
dockerBinaryPath = dockerPath
break
}
}
if dockerBinaryPath == "" {
return fmt.Errorf("docker binary not found")
}

cmd := exec.Command(dockerBinaryPath, "context", "use", "default")

// Run the command
_, err := cmd.CombinedOutput()
return err
}

0 comments on commit 4a5582b

Please sign in to comment.