diff --git a/cmd/control/user_docker.go b/cmd/control/user_docker.go index 7e5d106f..7a5f0695 100644 --- a/cmd/control/user_docker.go +++ b/cmd/control/user_docker.go @@ -175,14 +175,14 @@ func startDocker(cfg *config.CloudConfig) error { return err } - cmd := []string{"docker-runc", "exec", "--", info.ID, "env"} + cmd := []string{"system-docker-runc", "exec", "--", info.ID, "env"} log.Info(dockerCfg.AppendEnv()) cmd = append(cmd, dockerCfg.AppendEnv()...) cmd = append(cmd, dockerCommand...) cmd = append(cmd, args...) log.Infof("Running %v", cmd) - return syscall.Exec("/usr/bin/ros", cmd, os.Environ()) + return syscall.Exec("/usr/bin/system-docker-runc", cmd, os.Environ()) } func waitForPid(service string, project *project.Project) (int, error) { diff --git a/config/docker_config.go b/config/docker_config.go index 92f2fe10..e3b6eefd 100644 --- a/config/docker_config.go +++ b/config/docker_config.go @@ -8,7 +8,7 @@ import ( ) func (d *DockerConfig) FullArgs() []string { - args := []string{"daemon"} + args := []string{} args = append(args, generateEngineOptsSlice(d.EngineOpts)...) args = append(args, d.ExtraArgs...) if d.TLS { diff --git a/config/types.go b/config/types.go index 064705ad..91fcfa37 100755 --- a/config/types.go +++ b/config/types.go @@ -25,7 +25,7 @@ const ( ModulesArchive = "/modules.tar" Debug = false SystemDockerLog = "/var/log/system-docker.log" - SystemDockerBin = "/usr/bin/system-docker" + SystemDockerBin = "/usr/bin/system-dockerd" HashLabel = "io.rancher.os.hash" IDLabel = "io.rancher.os.id" diff --git a/docker/service.go b/docker/service.go index 3f1e95d9..4773c17b 100644 --- a/docker/service.go +++ b/docker/service.go @@ -55,6 +55,9 @@ func (s *Service) missingImage() bool { } client := s.context.ClientFactory.Create(s) _, _, err := client.ImageInspectWithRaw(context.Background(), image, false) + if err != nil { + log.Errorf("Missing the image: %v", err) + } return err != nil } diff --git a/init/sysinit.go b/init/sysinit.go index 076dc9ce..c8446f77 100644 --- a/init/sysinit.go +++ b/init/sysinit.go @@ -2,11 +2,13 @@ package init import ( "os" + "os/exec" "path" "syscall" "golang.org/x/net/context" + "github.com/docker/engine-api/types" "github.com/docker/libcompose/project/options" "github.com/rancher/os/cmd/control" "github.com/rancher/os/compose" @@ -74,22 +76,22 @@ func loadImages(cfg *config.CloudConfig) (*config.CloudConfig, error) { continue } + // client.ImageLoad is an asynchronous operation + // To ensure the order of execution, use cmd instead of it inputFileName := path.Join(config.ImagesPath, image) - input, err := os.Open(inputFileName) - if err != nil { - return cfg, err - } - - defer input.Close() - log.Infof("Loading images from %s", inputFileName) - if _, err = client.ImageLoad(context.Background(), input, true); err != nil { + if err = exec.Command("/usr/bin/system-docker", "load", "-q", "-i", inputFileName).Run(); err != nil { log.Fatalf("FATAL: failed loading images from %s: %s", inputFileName, err) } log.Infof("Done loading images from %s", inputFileName) } + dockerImages, _ := client.ImageList(context.Background(), types.ImageListOptions{}) + for _, dimg := range dockerImages { + log.Infof("Got image repo tags: %s", dimg.RepoTags) + } + return cfg, nil }