in ecs-init/docker/docker.go [397:438]
func (c *client) getHostConfig(envVarsFromFiles map[string]string) *godocker.HostConfig {
dockerSocketBind := getDockerSocketBind(envVarsFromFiles)
binds := []string{
dockerSocketBind,
config.LogDirectory() + ":" + logDir,
config.AgentDataDirectory() + ":" + dataDir,
config.AgentConfigDirectory() + ":" + config.AgentConfigDirectory(),
config.CacheDirectory() + ":" + config.CacheDirectory(),
config.CgroupMountpoint() + ":" + DefaultCgroupMountpoint,
// bind mount instance config dir
config.InstanceConfigDirectory() + ":" + config.InstanceConfigDirectory(),
filepath.Join(config.LogDirectory(), execAgentLogRelativePath) + ":" + filepath.Join(logDir, execAgentLogRelativePath),
}
// for al, al2 add host ssl cert directory mounts
if pkiDir := config.HostPKIDirPath(); pkiDir != "" {
certsPath := pkiDir + ":" + pkiDir + readOnly
binds = append(binds, certsPath)
}
if config.RunningInExternal() {
credsPath := externalEnvCredsHostDir + ":" + externalEnvCredsContainerDir + readOnly
binds = append(binds, credsPath)
}
for key, val := range c.LoadEnvVars() {
if key == config.GPUSupportEnvVar && val == "true" {
if nvidiaGPUDevicesPresent() {
// bind mount gpu info dir
binds = append(binds, gpu.GPUInfoDirPath+":"+gpu.GPUInfoDirPath)
}
}
}
binds = append(binds, getDockerPluginDirBinds()...)
// only add bind mounts when the src file/directory exists on host; otherwise docker API create an empty directory on host
binds = append(binds, getCapabilityExecBinds()...)
return createHostConfig(binds)
}