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 }