Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions kurtosis-devnet/pkg/build/docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,26 +56,32 @@ func (p *defaultDockerProvider) newClient() (dockerClient, error) {
opts := []client.Opt{client.FromEnv}

// Check if default docker socket exists
// See https://github.com/moby/moby/discussions/46015 :
// the ParseHostURL function does not technically support `unix`,
// and the non-scheme part just ends up in the `.Host` instead of `.Path`
hostURL, err := client.ParseHostURL(client.DefaultDockerHost)
if err != nil {
return nil, fmt.Errorf("failed to parse default docker host: %w", err)
}

// For unix sockets, check if the socket file exists
if hostURL.Scheme == "unix" {
if _, err := os.Stat(hostURL.Path); os.IsNotExist(err) {
if _, err := os.Stat(hostURL.Host); os.IsNotExist(err) {
// Default socket doesn't exist, try alternate location. Docker Desktop uses ~/.docker/run/docker.sock
// Docker Desktop uses ~/.docker/run/docker.sock
// or also ~/.docker/desktop/docker.sock
homeDir, err := os.UserHomeDir()
if err != nil {
return nil, fmt.Errorf("failed to get user home directory: %w", err)
}
homeSocketPath := fmt.Sprintf("%s/.docker/run/docker.sock", homeDir)
if _, err := os.Stat(homeSocketPath); os.IsNotExist(err) {
homeSocketHost := fmt.Sprintf("%s/.docker/run/docker.sock", homeDir)
if _, err := os.Stat(homeSocketHost); os.IsNotExist(err) {
return nil, errors.New("failed to find docker socket")
}
log.Printf("WARNING: using implied user docker socket: %q, make sure Kurtosis is running inside of the same docker context!", homeSocketHost)
socketURL := &url.URL{
Scheme: "unix",
Path: homeSocketPath,
Host: homeSocketHost,
}
// prepend the host, so that it can still be overridden by the environment.
opts = append([]client.Opt{client.WithHost(socketURL.String())}, opts...)
Expand Down