github.com/cilium/cilium@v1.16.2/tools/dev-doctor/dockergroupcheck.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package main
     5  
     6  import (
     7  	"fmt"
     8  	"os/user"
     9  	"runtime"
    10  )
    11  
    12  // A dockerGroupCheck checks that the current user is in the docker group.
    13  type dockerGroupCheck struct{}
    14  
    15  func (dockerGroupCheck) Name() string {
    16  	return "docker-group"
    17  }
    18  
    19  func (dockerGroupCheck) Run() (checkResult, string) {
    20  	if runtime.GOOS != "linux" {
    21  		return checkSkipped, "docker group only used on linux"
    22  	}
    23  
    24  	currentUser, err := user.Current()
    25  	if err != nil {
    26  		return checkFailed, err.Error()
    27  	}
    28  
    29  	groupIDs, err := currentUser.GroupIds()
    30  	if err != nil {
    31  		return checkFailed, err.Error()
    32  	}
    33  
    34  	dockerGroup, err := user.LookupGroup("docker")
    35  	if err != nil {
    36  		return checkFailed, err.Error()
    37  	}
    38  
    39  	for _, groupID := range groupIDs {
    40  		if groupID == dockerGroup.Gid {
    41  			return checkOK, fmt.Sprintf("user %s in docker group", currentUser.Username)
    42  		}
    43  	}
    44  
    45  	return checkError, fmt.Sprintf("user %s not in docker group", currentUser.Username)
    46  }
    47  
    48  func (dockerGroupCheck) Hint() string {
    49  	return `Run "sudo usermod $USER --append --group docker", then log out and back in.`
    50  }