Clean up docker root dir
This commit is contained in:
parent
4c506006f2
commit
d1868287db
@ -24,13 +24,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
dockerClient *dclient.Client
|
dockerClient *dclient.Client
|
||||||
dockerClientErr error
|
dockerClientErr error
|
||||||
once sync.Once
|
dockerClientOnce sync.Once
|
||||||
)
|
)
|
||||||
|
|
||||||
func Client() (*dclient.Client, error) {
|
func Client() (*dclient.Client, error) {
|
||||||
once.Do(func() {
|
dockerClientOnce.Do(func() {
|
||||||
dockerClient, dockerClientErr = dclient.NewClient(*ArgDockerEndpoint, "", nil, nil)
|
dockerClient, dockerClientErr = dclient.NewClient(*ArgDockerEndpoint, "", nil, nil)
|
||||||
})
|
})
|
||||||
return dockerClient, dockerClientErr
|
return dockerClient, dockerClientErr
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"path"
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"github.com/google/cadvisor/container"
|
"github.com/google/cadvisor/container"
|
||||||
"github.com/google/cadvisor/container/libcontainer"
|
"github.com/google/cadvisor/container/libcontainer"
|
||||||
@ -34,12 +35,7 @@ import (
|
|||||||
var ArgDockerEndpoint = flag.String("docker", "unix:///var/run/docker.sock", "docker endpoint")
|
var ArgDockerEndpoint = flag.String("docker", "unix:///var/run/docker.sock", "docker endpoint")
|
||||||
|
|
||||||
// The namespace under which Docker aliases are unique.
|
// The namespace under which Docker aliases are unique.
|
||||||
var DockerNamespace = "docker"
|
const DockerNamespace = "docker"
|
||||||
|
|
||||||
// Basepath to all container specific information that libcontainer stores.
|
|
||||||
// TODO: Deprecate this flag
|
|
||||||
var dockerRootDir = flag.String("docker_root", "/var/lib/docker", "Absolute path to the Docker state root directory (default: /var/lib/docker)")
|
|
||||||
var dockerRunDir = flag.String("docker_run", "/var/run/docker", "Absolute path to the Docker run directory (default: /var/run/docker)")
|
|
||||||
|
|
||||||
// Regexp that identifies docker cgroups, containers started with
|
// Regexp that identifies docker cgroups, containers started with
|
||||||
// --cgroup-parent have another prefix than 'docker'
|
// --cgroup-parent have another prefix than 'docker'
|
||||||
@ -47,12 +43,25 @@ var dockerCgroupRegexp = regexp.MustCompile(`([a-z0-9]{64})`)
|
|||||||
|
|
||||||
var dockerEnvWhitelist = flag.String("docker_env_metadata_whitelist", "", "a comma-separated list of environment variable keys that needs to be collected for docker containers")
|
var dockerEnvWhitelist = flag.String("docker_env_metadata_whitelist", "", "a comma-separated list of environment variable keys that needs to be collected for docker containers")
|
||||||
|
|
||||||
const (
|
var (
|
||||||
dockerRootDirKey = "Root Dir"
|
// Basepath to all container specific information that libcontainer stores.
|
||||||
|
dockerRootDir string
|
||||||
|
|
||||||
|
dockerRootDirFlag = flag.String("docker_root", "/var/lib/docker", "DEPRECATED: docker root is read from docker info (this is a fallback, default: /var/lib/docker)")
|
||||||
|
|
||||||
|
dockerRootDirOnce sync.Once
|
||||||
)
|
)
|
||||||
|
|
||||||
func RootDir() string {
|
func RootDir() string {
|
||||||
return *dockerRootDir
|
dockerRootDirOnce.Do(func() {
|
||||||
|
status, err := Status()
|
||||||
|
if err == nil && status.RootDir != "" {
|
||||||
|
dockerRootDir = status.RootDir
|
||||||
|
} else {
|
||||||
|
dockerRootDir = *dockerRootDirFlag
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return dockerRootDir
|
||||||
}
|
}
|
||||||
|
|
||||||
type storageDriver string
|
type storageDriver string
|
||||||
@ -172,10 +181,6 @@ func Register(factory info.MachineInfoFactory, fsInfo fs.FsInfo, ignoreMetrics c
|
|||||||
// Version already validated above, assume no error here.
|
// Version already validated above, assume no error here.
|
||||||
dockerVersion, _ := parseDockerVersion(dockerInfo.ServerVersion)
|
dockerVersion, _ := parseDockerVersion(dockerInfo.ServerVersion)
|
||||||
|
|
||||||
storageDir := dockerInfo.DockerRootDir
|
|
||||||
if storageDir == "" {
|
|
||||||
storageDir = *dockerRootDir
|
|
||||||
}
|
|
||||||
cgroupSubsystems, err := libcontainer.GetCgroupSubsystems()
|
cgroupSubsystems, err := libcontainer.GetCgroupSubsystems()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to get cgroup subsystems: %v", err)
|
return fmt.Errorf("failed to get cgroup subsystems: %v", err)
|
||||||
@ -189,7 +194,7 @@ func Register(factory info.MachineInfoFactory, fsInfo fs.FsInfo, ignoreMetrics c
|
|||||||
fsInfo: fsInfo,
|
fsInfo: fsInfo,
|
||||||
machineInfoFactory: factory,
|
machineInfoFactory: factory,
|
||||||
storageDriver: storageDriver(dockerInfo.Driver),
|
storageDriver: storageDriver(dockerInfo.Driver),
|
||||||
storageDir: storageDir,
|
storageDir: RootDir(),
|
||||||
ignoreMetrics: ignoreMetrics,
|
ignoreMetrics: ignoreMetrics,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user