github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/website/source/docs/providers/docker/r/container.html.markdown (about) 1 --- 2 layout: "docker" 3 page_title: "Docker: docker_container" 4 sidebar_current: "docs-docker-resource-container" 5 description: |- 6 Manages the lifecycle of a Docker container. 7 --- 8 9 # docker\_container 10 11 Manages the lifecycle of a Docker container. 12 13 ## Example Usage 14 15 ```hcl 16 # Start a container 17 resource "docker_container" "ubuntu" { 18 name = "foo" 19 image = "${docker_image.ubuntu.latest}" 20 } 21 22 # Find the latest Ubuntu precise image. 23 resource "docker_image" "ubuntu" { 24 name = "ubuntu:precise" 25 } 26 ``` 27 28 ## Argument Reference 29 30 The following arguments are supported: 31 32 * `name` - (Required, string) The name of the Docker container. 33 * `image` - (Required, string) The ID of the image to back this container. 34 The easiest way to get this value is to use the `docker_image` resource 35 as is shown in the example above. 36 37 * `command` - (Optional, list of strings) The command to use to start the 38 container. For example, to run `/usr/bin/myprogram -f baz.conf` set the 39 command to be `["/usr/bin/myprogram", "-f", "baz.conf"]`. 40 * `entrypoint` - (Optional, list of strings) The command to use as the 41 Entrypoint for the container. The Entrypoint allows you to configure a 42 container to run as an executable. For example, to run `/usr/bin/myprogram` 43 when starting a container, set the entrypoint to be 44 `["/usr/bin/myprogram"]`. 45 * `user` - (Optional, string) User used for run the first process. Format is 46 `user` or `user:group` which user and group can be passed literraly or 47 by name. 48 * `dns` - (Optional, set of strings) Set of DNS servers. 49 * `dns_opts` - (Optional, set of strings) Set of DNS options used by the DNS provider(s), see `resolv.conf` documentation for valid list of options. 50 * `dns_search` - (Optional, set of strings) Set of DNS search domains that are used when bare unqualified hostnames are used inside of the container. 51 * `env` - (Optional, set of strings) Environment variables to set. 52 * `labels` - (Optional, map of strings) Key/value pairs to set as labels on the 53 container. 54 * `links` - (Optional, set of strings) Set of links for link based 55 connectivity between containers that are running on the same host. 56 * `hostname` - (Optional, string) Hostname of the container. 57 * `domainname` - (Optional, string) Domain name of the container. 58 * `restart` - (Optional, string) The restart policy for the container. Must be 59 one of "no", "on-failure", "always", "unless-stopped". 60 * `max_retry_count` - (Optional, int) The maximum amount of times to an attempt 61 a restart when `restart` is set to "on-failure" 62 * `must_run` - (Optional, bool) If true, then the Docker container will be 63 kept running. If false, then as long as the container exists, Terraform 64 assumes it is successful. 65 * `capabilities` - (Optional, block) See [Capabilities](#capabilities) below for details. 66 * `ports` - (Optional, block) See [Ports](#ports) below for details. 67 * `host` - (Optional, block) See [Extra Hosts](#extra_hosts) below for 68 details. 69 * `privileged` - (Optional, bool) Run container in privileged mode. 70 * `publish_all_ports` - (Optional, bool) Publish all ports of the container. 71 * `volumes` - (Optional, block) See [Volumes](#volumes) below for details. 72 * `memory` - (Optional, int) The memory limit for the container in MBs. 73 * `memory_swap` - (Optional, int) The total memory limit (memory + swap) for the 74 container in MBs. This setting may compute to `-1` after `terraform apply` if the target host doesn't support memory swap, when that is the case docker will use a soft limitation. 75 * `cpu_shares` - (Optional, int) CPU shares (relative weight) for the container. 76 * `log_driver` - (Optional, string) The logging driver to use for the container. 77 Defaults to "json-file". 78 * `log_opts` - (Optional, map of strings) Key/value pairs to use as options for 79 the logging driver. 80 * `network_mode` - (Optional, string) Network mode of the container. 81 * `networks` - (Optional, set of strings) Id of the networks in which the 82 container is. 83 * `destroy_grace_seconds` - (Optional, int) If defined will attempt to stop the container before destroying. Container will be destroyed after `n` seconds or on successful stop. 84 * `upload` - (Optional, block) See [File Upload](#upload) below for details. 85 86 <a id="capabilities"></a> 87 ### Capabilities 88 89 `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. 90 91 * `add` - (Optional, set of strings) list of linux capabilities to add. 92 * `drop` - (Optional, set of strings) list of linux capabilities to drop. 93 94 Example: 95 96 ```hcl 97 resource "docker_container" "ubuntu" { 98 name = "foo" 99 image = "${docker_image.ubuntu.latest}" 100 capabilities { 101 add = ["ALL"] 102 drop = ["SYS_ADMIN"] 103 } 104 } 105 ``` 106 107 <a id="ports"></a> 108 ### Ports 109 110 `ports` is a block within the configuration that can be repeated to specify 111 the port mappings of the container. Each `ports` block supports 112 the following: 113 114 * `internal` - (Required, int) Port within the container. 115 * `external` - (Required, int) Port exposed out of the container. 116 * `ip` - (Optional, string) IP address/mask that can access this port. 117 * `protocol` - (Optional, string) Protocol that can be used over this port, 118 defaults to TCP. 119 120 <a id="extra_hosts"></a> 121 ### Extra Hosts 122 123 `host` is a block within the configuration that can be repeated to specify 124 the extra host mappings for the container. Each `host` block supports 125 the following: 126 127 * `host` - (Required, string) Hostname to add. 128 * `ip` - (Required, string) IP address this hostname should resolve to. 129 130 This is equivalent to using the `--add-host` option when using the `run` 131 command of the Docker CLI. 132 133 <a id="volumes"></a> 134 ### Volumes 135 136 `volumes` is a block within the configuration that can be repeated to specify 137 the volumes attached to a container. Each `volumes` block supports 138 the following: 139 140 * `from_container` - (Optional, string) The container where the volume is 141 coming from. 142 * `host_path` - (Optional, string) The path on the host where the volume 143 is coming from. 144 * `volume_name` - (Optional, string) The name of the docker volume which 145 should be mounted. 146 * `container_path` - (Optional, string) The path in the container where the 147 volume will be mounted. 148 * `read_only` - (Optional, bool) If true, this volume will be readonly. 149 Defaults to false. 150 151 One of `from_container`, `host_path` or `volume_name` must be set. 152 153 <a id="upload"></a> 154 ### File Upload 155 156 `upload` is a block within the configuration that can be repeated to specify 157 files to upload to the container before starting it. 158 Each `upload` supports the following 159 160 * `content` - (Required, string) A content of a file to upload. 161 * `file` - (Required, string) path to a file in the container. 162 163 ## Attributes Reference 164 165 The following attributes are exported: 166 167 * `ip_address` - The IP address of the container as read from its 168 NetworkSettings. 169 * `ip_prefix_length` - The IP prefix length of the container as read from its 170 NetworkSettings. 171 * `gateway` - The network gateway of the container as read from its 172 NetworkSettings. 173 * `bridge` - The network bridge of the container as read from its 174 NetworkSettings.