1
0
mirror of https://github.com/rancher/os.git synced 2025-05-19 21:40:08 +00:00
os/cmd/systemdocker/system-docker.go
Wang Long 6617eab12f print proper tips when running ros or system-docker without using sudo
`ros` and `system-docker` command requires user to be the root user,
when we running them without using sudo, it will print the follow:

[rancher@rancher ~]$ ros os list
ERRO[0000] Failed to read /var/lib/rancher/conf/cloud-config.d: open
/var/lib/rancher/conf/cloud-config.d: permission denied
ERRO[0000] Error reading config files                    err=open
/var/lib/rancher/conf/cloud-config.yml: permission denied
files=[/var/lib/rancher/conf/cloud-config.yml]
ERRO[0000] Failed [1/4] 25%
ERRO[0000] Failed to load config
......
......
FATA[0000] open /var/lib/rancher/conf/cloud-config.yml: permission
denied

and

[rancher@rancher ~]$ system-docker restart docker
Failed to kill container(docker): Cannot connect to the Docker daemon.
Is the docker daemon running on this host?

this patch make the tips more clear and simple.

Signed-off-by: Wang Long <long.wanglong@huawei.com>
2016-03-16 17:50:54 +08:00

31 lines
557 B
Go

package systemdocker
import (
"os"
"strings"
"syscall"
log "github.com/Sirupsen/logrus"
"github.com/rancher/os/config"
)
func Main() {
var newEnv []string
for _, env := range os.Environ() {
if !strings.HasPrefix(env, "DOCKER_HOST=") {
newEnv = append(newEnv, env)
}
}
newEnv = append(newEnv, "DOCKER_HOST="+config.DOCKER_SYSTEM_HOST)
if os.Geteuid() != 0 {
log.Fatalf("%s: Need to be root", os.Args[0])
}
os.Args[0] = config.DOCKER_DIST_BIN
if err := syscall.Exec(os.Args[0], os.Args, newEnv); err != nil {
log.Fatal(err)
}
}