» docker_container
Manages the lifecycle of a Docker container.
» Example Usage
# Start a container
resource "docker_container" "ubuntu" {
name = "foo"
image = "${docker_image.ubuntu.latest}"
}
# Find the latest Ubuntu precise image.
resource "docker_image" "ubuntu" {
name = "ubuntu:precise"
}
» Argument Reference
The following arguments are supported:
-
name- (Required, string) The name of the Docker container. -
image- (Required, string) The ID of the image to back this container. The easiest way to get this value is to use thedocker_imageresource as is shown in the example above. -
command- (Optional, list of strings) The command to use to start the container. For example, to run/usr/bin/myprogram -f baz.confset the command to be["/usr/bin/myprogram", "-f", "baz.conf"]. -
entrypoint- (Optional, list of strings) The command to use as the Entrypoint for the container. The Entrypoint allows you to configure a container to run as an executable. For example, to run/usr/bin/myprogramwhen starting a container, set the entrypoint to be["/usr/bin/myprogram"]. -
user- (Optional, string) User used for run the first process. Format isuseroruser:groupwhich user and group can be passed literraly or by name. -
dns- (Optional, set of strings) Set of DNS servers. -
dns_opts- (Optional, set of strings) Set of DNS options used by the DNS provider(s), seeresolv.confdocumentation for valid list of options. -
dns_search- (Optional, set of strings) Set of DNS search domains that are used when bare unqualified hostnames are used inside of the container. -
env- (Optional, set of strings) Environment variables to set. -
labels- (Optional, map of strings) Key/value pairs to set as labels on the container. -
links- (Optional, set of strings) Set of links for link based connectivity between containers that are running on the same host.
Warning The --link flag is a legacy feature of Docker. It may eventually be removed. It exposes all environment variables originating from Docker to any linked containers. This could have serious security implications if sensitive data is stored in them. See [the docker documentation][linkdoc] for more details.
-
hostname- (Optional, string) Hostname of the container. -
domainname- (Optional, string) Domain name of the container. -
restart- (Optional, string) The restart policy for the container. Must be one of "no", "on-failure", "always", "unless-stopped". -
max_retry_count- (Optional, int) The maximum amount of times to an attempt a restart whenrestartis set to "on-failure" -
rm- (Optional, bool) If true, then the container will be automatically removed after his execution. Terraform won't check this container after creation. -
start- (Optional, bool) If true, then the Docker container will be started after creation. If false, then the container is only created. -
attach- (Optional, bool) If true attach to the container after its creation and waits the end of his execution. -
logs- (Optional, bool) Save the container logs (attachmust be enabled). -
must_run- (Optional, bool) If true, then the Docker container will be kept running. If false, then as long as the container exists, Terraform assumes it is successful. -
capabilities- (Optional, block) See Capabilities below for details. -
ports- (Optional, block) See Ports below for details. -
host- (Optional, block) See Extra Hosts below for details. -
privileged- (Optional, bool) Run container in privileged mode. -
devices- (Optional, bool) See Devices below for details. -
publish_all_ports- (Optional, bool) Publish all ports of the container. -
volumes- (Optional, block) See Volumes below for details. -
memory- (Optional, int) The memory limit for the container in MBs. -
memory_swap- (Optional, int) The total memory limit (memory + swap) for the container in MBs. This setting may compute to-1afterterraform applyif the target host doesn't support memory swap, when that is the case docker will use a soft limitation. -
cpu_shares- (Optional, int) CPU shares (relative weight) for the container. -
cpu_set- (Optional, string) A comma-separated list or hyphen-separated range of CPUs a container can use, e.g.0-1. -
log_driver- (Optional, string) The logging driver to use for the container. Defaults to "json-file". -
log_opts- (Optional, map of strings) Key/value pairs to use as options for the logging driver. -
network_alias- (Optional, set of strings) Network aliases of the container for user-defined networks only. Deprecated: usenetworks_advancedinstead. -
network_mode- (Optional, string) Network mode of the container. -
networks- (Optional, set of strings) Id of the networks in which the container is. Deprecated: usenetworks_advancedinstead. -
networks_advanced- (Optional, block) See Networks Advanced below for details. If this block has priority to the deprecatednetwork_aliasandnetworkproperties. -
destroy_grace_seconds- (Optional, int) If defined will attempt to stop the container before destroying. Container will be destroyed afternseconds or on successful stop. -
upload- (Optional, block) See File Upload below for details. -
ulimit- (Optional, block) See Ulimits below for details. -
pid_mode- (Optional, string) The PID (Process) Namespace mode for the container. Eithercontainer:<name|id>orhost. -
userns_mode- (Optional, string) Sets the usernamespace mode for the container when usernamespace remapping option is enabled. -
healthcheck- (Optional, block) See Healthcheck below for details.
» Capabilities
capabilities is a block within the configuration that allows you to add or drop linux capabilities. For more information about what capabilities you can add and drop please visit the docker run documentation.
-
add- (Optional, set of strings) list of linux capabilities to add. -
drop- (Optional, set of strings) list of linux capabilities to drop.
Example:
resource "docker_container" "ubuntu" {
name = "foo"
image = "${docker_image.ubuntu.latest}"
capabilities {
add = ["ALL"]
drop = ["SYS_ADMIN"]
}
}
» Ports
ports is a block within the configuration that can be repeated to specify
the port mappings of the container. Each ports block supports
the following:
-
internal- (Required, int) Port within the container. -
external- (Optional, int) Port exposed out of the container. If not given a free random port>= 32768will be used. -
ip- (Optional, string) IP address/mask that can access this port, default to0.0.0.0 -
protocol- (Optional, string) Protocol that can be used over this port, defaults totcp.
» Extra Hosts
host is a block within the configuration that can be repeated to specify
the extra host mappings for the container. Each host block supports
the following:
-
host- (Required, string) Hostname to add. -
ip- (Required, string) IP address this hostname should resolve to.
This is equivalent to using the --add-host option when using the run
command of the Docker CLI.
» Volumes
volumes is a block within the configuration that can be repeated to specify
the volumes attached to a container. Each volumes block supports
the following:
-
from_container- (Optional, string) The container where the volume is coming from. -
host_path- (Optional, string) The path on the host where the volume is coming from. -
volume_name- (Optional, string) The name of the docker volume which should be mounted. -
container_path- (Optional, string) The path in the container where the volume will be mounted. -
read_only- (Optional, bool) If true, this volume will be readonly. Defaults to false.
One of from_container, host_path or volume_name must be set.
» File Upload
upload is a block within the configuration that can be repeated to specify
files to upload to the container before starting it.
Each upload supports the following
-
content- (Required, string) A content of a file to upload. -
file- (Required, string) path to a file in the container. -
executable- (Optional, bool) If true, the file will be uploaded with user executable permission. Defaults to false.
» Network advanced
networks_advanced is a block within the configuration that can be repeated to specify
advanced options for the container in a specific network.
Each networks_advanced supports the following:
-
name- (Required, string) The name of the network. -
aliases- (Optional, set of strings) The network aliases of the container in the specific network. -
ipv4_address- (Optional, string) The IPV4 address of the container in the specific network. -
ipv6_address- (Optional, string) The IPV6 address of the container in the specific network.
» Devices
devices is a block within the configuration that can be repeated to specify
the devices exposed to a container. Each devices block supports
the following:
-
host_path- (Required, string) The path on the host where the device is located. -
container_path- (Optional, string) The path in the container where the device will be binded. -
permissions- (Optional, string) The cgroup permissions given to the container to access the device. Defaults torwm.
» Ulimits
ulimit is a block within the configuration that can be repeated to specify
the extra ulimits for the container. Each ulimit block supports
the following:
» Healthcheck
healthcheck is a block within the configuration that can be repeated only once to specify the extra healthcheck configuration for the container. The healthcheck block is a test to perform to check that the container is healthy and supports the following:
-
test- (Required, list of strings) Command to run to check health. For example, to runcurl -f http://localhost/healthset the command to be["CMD", "curl", "-f", "http://localhost/health"]. -
interval- (Optional, string) Time between running the check(ms|s|m|h). Default:0s. -
timeout- (Optional, string) Maximum time to allow one check to run(ms|s|m|h). Default:0s. -
start_period- (Optional, string) Start period for the container to initialize before counting retries towards unstable(ms|s|m|h). Default:0s. -
retries- (Optional, int) Consecutive failures needed to report unhealthy. Default:0.
» Attributes Reference
The following attributes are exported:
-
exit_code- The exit code of the container if its execution is done (must_runmust be disabled). -
container_logs- The logs of the container if its execution is done (attachmust be disabled). -
network_data- (Map of a block) The IP addresses of the container on each network. Key are the network names, values are the IP addresses.-
ip_address- The IP address of the container. -
ip_prefix_length- The IP prefix length of the container. -
gateway- The network gateway of the container.
-
-
bridge- The network bridge of the container as read from its NetworkSettings. -
ip_address- Deprecated: Usenetwork_datainstead. The IP address of the container's first network it. -
ip_prefix_length- Deprecated: Usenetwork_datainstead. The IP prefix length of the container as read from its NetworkSettings. -
gateway- Deprecated: Usenetwork_datainstead. The network gateway of the container as read from its NetworkSettings.
[linkdoc] https://docs.docker.com/network/links/