in executors/docker/docker.go [783:849]
func (e *executor) createHostConfig(isBuildContainer, imageIsPrivileged bool) (*container.HostConfig, error) {
nanoCPUs, err := e.Config.Docker.GetNanoCPUs()
if err != nil {
return nil, err
}
isolation := container.Isolation(e.Config.Docker.Isolation)
if !isolation.IsValid() {
return nil, fmt.Errorf("the isolation value %q is not valid. "+
"the valid values are: 'process', 'hyperv', 'default' and an empty string", isolation)
}
ulimits, err := e.Config.Docker.GetUlimits()
if err != nil {
return nil, err
}
var useInit *bool
if isBuildContainer && e.Build.IsFeatureFlagOn(featureflags.UseInitWithDockerExecutor) {
yes := true
useInit = &yes
}
return &container.HostConfig{
Resources: container.Resources{
Memory: e.Config.Docker.GetMemory(),
MemorySwap: e.Config.Docker.GetMemorySwap(),
MemoryReservation: e.Config.Docker.GetMemoryReservation(),
CgroupParent: e.Config.Docker.CgroupParent,
CpusetCpus: e.Config.Docker.CPUSetCPUs,
CpusetMems: e.Config.Docker.CPUSetMems,
CPUShares: e.Config.Docker.CPUShares,
NanoCPUs: nanoCPUs,
Devices: e.devices,
DeviceRequests: e.deviceRequests,
OomKillDisable: e.Config.Docker.GetOomKillDisable(),
DeviceCgroupRules: e.Config.Docker.DeviceCgroupRules,
Ulimits: ulimits,
},
DNS: e.Config.Docker.DNS,
DNSSearch: e.Config.Docker.DNSSearch,
Runtime: e.Config.Docker.Runtime,
Privileged: e.Config.Docker.Privileged && imageIsPrivileged,
GroupAdd: e.Config.Docker.GroupAdd,
UsernsMode: container.UsernsMode(e.Config.Docker.UsernsMode),
CapAdd: e.Config.Docker.CapAdd,
CapDrop: e.Config.Docker.CapDrop,
SecurityOpt: e.Config.Docker.SecurityOpt,
RestartPolicy: neverRestartPolicy,
ExtraHosts: e.Config.Docker.ExtraHosts,
NetworkMode: e.networkMode,
IpcMode: container.IpcMode(e.Config.Docker.IpcMode),
Links: append(e.Config.Docker.Links, e.links...),
Binds: e.volumesManager.Binds(),
OomScoreAdj: e.Config.Docker.OomScoreAdjust,
ShmSize: e.Config.Docker.ShmSize,
Isolation: isolation,
VolumeDriver: e.Config.Docker.VolumeDriver,
VolumesFrom: e.Config.Docker.VolumesFrom,
LogConfig: container.LogConfig{
Type: "json-file",
},
Tmpfs: e.Config.Docker.Tmpfs,
Sysctls: e.Config.Docker.SysCtls,
Init: useInit,
}, nil
}