Skip to content

Commit

Permalink
Merge pull request #10042 from spowelljr/snapFix
Browse files Browse the repository at this point in the history
Fix docker driver cert copy on ubuntu's snap package manager
  • Loading branch information
medyagh authored Dec 30, 2020
2 parents 81460f0 + b28c1ec commit 358c9c5
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion pkg/minikube/command/kic_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"os"
"os/exec"
"path"
"path/filepath"
"runtime"
"strconv"
"strings"
Expand Down Expand Up @@ -185,7 +186,18 @@ func (k *kicRunner) Copy(f assets.CopyableFile) error {
}
}
klog.Infof("%s (temp): %s --> %s (%d bytes)", k.ociBin, src, dst, f.GetLength())
tf, err := ioutil.TempFile("", "tmpf-memory-asset")
tmpFolder := ""

// Snap only allows an application to see its own files in /tmp, making Docker unable to copy memory assets
// https://github.com/kubernetes/minikube/issues/10020
if isSnapBinary() {
home, err := os.UserHomeDir()
if err != nil {
return errors.Wrap(err, "detecting home dir")
}
tmpFolder = os.Getenv(home)
}
tf, err := ioutil.TempFile(tmpFolder, "tmpf-memory-asset")
if err != nil {
return errors.Wrap(err, "creating temporary file")
}
Expand All @@ -197,6 +209,15 @@ func (k *kicRunner) Copy(f assets.CopyableFile) error {
return k.copy(tf.Name(), dst)
}

func isSnapBinary() bool {
ex, err := os.Executable()
if err != nil {
return false
}
exPath := filepath.Dir(ex)
return strings.Contains(exPath, "snap")
}

func (k *kicRunner) copy(src string, dst string) error {
fullDest := fmt.Sprintf("%s:%s", k.nameOrID, dst)
if k.ociBin == oci.Podman {
Expand Down

0 comments on commit 358c9c5

Please sign in to comment.