mirror of
https://github.com/kreuzwerker/terraform-provider-docker.git
synced 2025-12-22 15:49:34 -05:00
feat: cgroupns support (#497)
* feat: Add cgroupns mode to docker container. * docs: Create docs.
This commit is contained in:
parent
9233454972
commit
8a4be13ce1
3 changed files with 20 additions and 0 deletions
|
|
@ -37,6 +37,7 @@ resource "docker_image" "ubuntu" {
|
||||||
|
|
||||||
- `attach` (Boolean) If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`.
|
- `attach` (Boolean) If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`.
|
||||||
- `capabilities` (Block Set, Max: 1) Add or drop certrain linux capabilities. (see [below for nested schema](#nestedblock--capabilities))
|
- `capabilities` (Block Set, Max: 1) Add or drop certrain linux capabilities. (see [below for nested schema](#nestedblock--capabilities))
|
||||||
|
- `cgroupns_mode` (String) Cgroup namespace mode to use for the container. Possible values are: `private`, `host`.
|
||||||
- `command` (List of String) The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`.
|
- `command` (List of String) The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`.
|
||||||
- `container_read_refresh_timeout_milliseconds` (Number) The total number of milliseconds to wait for the container to reach status 'running'
|
- `container_read_refresh_timeout_milliseconds` (Number) The total number of milliseconds to wait for the container to reach status 'running'
|
||||||
- `cpu_set` (String) A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`.
|
- `cpu_set` (String) A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`.
|
||||||
|
|
|
||||||
|
|
@ -1000,6 +1000,12 @@ func resourceDockerContainer() *schema.Resource {
|
||||||
Optional: true,
|
Optional: true,
|
||||||
ForceNew: true,
|
ForceNew: true,
|
||||||
},
|
},
|
||||||
|
"cgroupns_mode": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Description: "Cgroup namespace mode to use for the container. Possible values are: `private`, `host`.",
|
||||||
|
Optional: true,
|
||||||
|
ForceNew: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -362,6 +362,19 @@ func resourceDockerContainerCreate(ctx context.Context, d *schema.ResourceData,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v, ok := d.GetOk("cgroupns_mode"); ok {
|
||||||
|
if client.ClientVersion() >= "1.41" {
|
||||||
|
cgroupnsMode := container.CgroupnsMode(v.(string))
|
||||||
|
if !cgroupnsMode.Valid() {
|
||||||
|
return diag.Errorf("cgroupns_mode: invalid CGROUP mode, must be either 'private', 'host' or empty")
|
||||||
|
} else {
|
||||||
|
hostConfig.CgroupnsMode = cgroupnsMode
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.Printf("[WARN] cgroupns_mode requires docker version 1.41 or higher")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init := d.Get("init").(bool)
|
init := d.Get("init").(bool)
|
||||||
hostConfig.Init = &init
|
hostConfig.Init = &init
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue