|
@@ -39,8 +39,10 @@ type nopLog struct{}
|
|
|
|
|
|
func (nopLog) Logf(string, ...interface{}) {}
|
|
func (nopLog) Logf(string, ...interface{}) {}
|
|
|
|
|
|
-const defaultDockerdBinary = "dockerd"
|
|
|
|
-const containerdSocket = "/var/run/docker/containerd/containerd.sock"
|
|
|
|
|
|
+const (
|
|
|
|
+ defaultDockerdBinary = "dockerd"
|
|
|
|
+ defaultContainerdSocket = "/var/run/docker/containerd/containerd.sock"
|
|
|
|
+)
|
|
|
|
|
|
var errDaemonNotStarted = errors.New("daemon not started")
|
|
var errDaemonNotStarted = errors.New("daemon not started")
|
|
|
|
|
|
@@ -75,6 +77,7 @@ type Daemon struct {
|
|
log LogT
|
|
log LogT
|
|
pidFile string
|
|
pidFile string
|
|
args []string
|
|
args []string
|
|
|
|
+ containerdSocket string
|
|
|
|
|
|
// swarm related field
|
|
// swarm related field
|
|
swarmListenAddr string
|
|
swarmListenAddr string
|
|
@@ -120,11 +123,12 @@ func NewDaemon(workingDir string, ops ...Option) (*Daemon, error) {
|
|
storageDriver: storageDriver,
|
|
storageDriver: storageDriver,
|
|
userlandProxy: userlandProxy,
|
|
userlandProxy: userlandProxy,
|
|
// dxr stands for docker-execroot (shortened for avoiding unix(7) path length limitation)
|
|
// dxr stands for docker-execroot (shortened for avoiding unix(7) path length limitation)
|
|
- execRoot: filepath.Join(os.TempDir(), "dxr", id),
|
|
|
|
- dockerdBinary: defaultDockerdBinary,
|
|
|
|
- swarmListenAddr: defaultSwarmListenAddr,
|
|
|
|
- SwarmPort: DefaultSwarmPort,
|
|
|
|
- log: nopLog{},
|
|
|
|
|
|
+ execRoot: filepath.Join(os.TempDir(), "dxr", id),
|
|
|
|
+ dockerdBinary: defaultDockerdBinary,
|
|
|
|
+ swarmListenAddr: defaultSwarmListenAddr,
|
|
|
|
+ SwarmPort: DefaultSwarmPort,
|
|
|
|
+ log: nopLog{},
|
|
|
|
+ containerdSocket: defaultContainerdSocket,
|
|
}
|
|
}
|
|
|
|
|
|
for _, op := range ops {
|
|
for _, op := range ops {
|
|
@@ -252,17 +256,20 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
|
d.pidFile = filepath.Join(d.Folder, "docker.pid")
|
|
d.pidFile = filepath.Join(d.Folder, "docker.pid")
|
|
}
|
|
}
|
|
|
|
|
|
- d.args = append(d.GlobalFlags,
|
|
|
|
- "--containerd", containerdSocket,
|
|
|
|
- "--data-root", d.Root,
|
|
|
|
|
|
+ d.args = append(d.GlobalFlags, "--data-root", d.Root)
|
|
|
|
+ if d.containerdSocket != "" {
|
|
|
|
+ d.args = append(d.args, "--containerd", d.containerdSocket)
|
|
|
|
+ }
|
|
|
|
+ d.args = append(d.args,
|
|
"--exec-root", d.execRoot,
|
|
"--exec-root", d.execRoot,
|
|
"--pidfile", d.pidFile,
|
|
"--pidfile", d.pidFile,
|
|
fmt.Sprintf("--userland-proxy=%t", d.userlandProxy),
|
|
fmt.Sprintf("--userland-proxy=%t", d.userlandProxy),
|
|
"--containerd-namespace", d.id,
|
|
"--containerd-namespace", d.id,
|
|
"--containerd-plugins-namespace", d.id+"p",
|
|
"--containerd-plugins-namespace", d.id+"p",
|
|
)
|
|
)
|
|
|
|
+
|
|
if d.defaultCgroupNamespaceMode != "" {
|
|
if d.defaultCgroupNamespaceMode != "" {
|
|
- d.args = append(d.args, []string{"--default-cgroupns-mode", d.defaultCgroupNamespaceMode}...)
|
|
|
|
|
|
+ d.args = append(d.args, "--default-cgroupns-mode", d.defaultCgroupNamespaceMode)
|
|
}
|
|
}
|
|
if d.experimental {
|
|
if d.experimental {
|
|
d.args = append(d.args, "--experimental")
|
|
d.args = append(d.args, "--experimental")
|
|
@@ -271,10 +278,10 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
|
d.args = append(d.args, "--init")
|
|
d.args = append(d.args, "--init")
|
|
}
|
|
}
|
|
if !(d.UseDefaultHost || d.UseDefaultTLSHost) {
|
|
if !(d.UseDefaultHost || d.UseDefaultTLSHost) {
|
|
- d.args = append(d.args, []string{"--host", d.Sock()}...)
|
|
|
|
|
|
+ d.args = append(d.args, "--host", d.Sock())
|
|
}
|
|
}
|
|
if root := os.Getenv("DOCKER_REMAP_ROOT"); root != "" {
|
|
if root := os.Getenv("DOCKER_REMAP_ROOT"); root != "" {
|
|
- d.args = append(d.args, []string{"--userns-remap", root}...)
|
|
|
|
|
|
+ d.args = append(d.args, "--userns-remap", root)
|
|
}
|
|
}
|
|
|
|
|
|
// If we don't explicitly set the log-level or debug flag(-D) then
|
|
// If we don't explicitly set the log-level or debug flag(-D) then
|