github.com/simonswine/terraform@v0.9.0-beta2/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  ```
    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  * `ports` - (Optional, block) See [Ports](#ports) below for details.
    66  * `host` - (Optional, block) See [Extra Hosts](#extra_hosts) below for
    67    details.
    68  * `privileged` - (Optional, bool) Run container in privileged mode.
    69  * `publish_all_ports` - (Optional, bool) Publish all ports of the container.
    70  * `volumes` - (Optional, block) See [Volumes](#volumes) below for details.
    71  * `memory` - (Optional, int) The memory limit for the container in MBs.
    72  * `memory_swap` - (Optional, int) The total memory limit (memory + swap) for the
    73    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.
    74  * `cpu_shares` - (Optional, int) CPU shares (relative weight) for the container.
    75  * `log_driver` - (Optional, string) The logging driver to use for the container.
    76    Defaults to "json-file".
    77  * `log_opts` - (Optional, map of strings) Key/value pairs to use as options for
    78    the logging driver.
    79  * `network_mode` - (Optional, string) Network mode of the container.
    80  * `networks` - (Optional, set of strings) Id of the networks in which the
    81    container is.
    82  * `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.
    83  * `upload` - (Optional, block) See [File Upload](#upload) below for details.
    84  
    85  <a id="ports"></a>
    86  ### Ports
    87  
    88  `ports` is a block within the configuration that can be repeated to specify
    89  the port mappings of the container. Each `ports` block supports
    90  the following:
    91  
    92  * `internal` - (Required, int) Port within the container.
    93  * `external` - (Required, int) Port exposed out of the container.
    94  * `ip` - (Optional, string) IP address/mask that can access this port.
    95  * `protocol` - (Optional, string) Protocol that can be used over this port,
    96    defaults to TCP.
    97  
    98  <a id="extra_hosts"></a>
    99  ### Extra Hosts
   100  
   101  `host` is a block within the configuration that can be repeated to specify
   102  the extra host mappings for the container. Each `host` block supports
   103  the following:
   104  
   105  * `host` - (Required, string) Hostname to add.
   106  * `ip` - (Required, string) IP address this hostname should resolve to.
   107  
   108  This is equivalent to using the `--add-host` option when using the `run`
   109  command of the Docker CLI.
   110  
   111  <a id="volumes"></a>
   112  ### Volumes
   113  
   114  `volumes` is a block within the configuration that can be repeated to specify
   115  the volumes attached to a container. Each `volumes` block supports
   116  the following:
   117  
   118  * `from_container` - (Optional, string) The container where the volume is
   119    coming from.
   120  * `host_path` - (Optional, string) The path on the host where the volume
   121    is coming from.
   122  * `volume_name` - (Optional, string) The name of the docker volume which
   123    should be mounted.
   124  * `container_path` - (Optional, string) The path in the container where the
   125    volume will be mounted.
   126  * `read_only` - (Optional, bool) If true, this volume will be readonly.
   127    Defaults to false.
   128  
   129  One of `from_container`, `host_path` or `volume_name` must be set.
   130  
   131  <a id="upload"></a>
   132  ### File Upload
   133  
   134  `upload` is a block within the configuration that can be repeated to specify
   135  files to upload to the container before starting it.
   136  Each `upload` supports the following
   137  
   138  * `content` - (Required, string) A content of a file to upload.
   139  * `file` - (Required, string) path to a file in the container.
   140  
   141  ## Attributes Reference
   142  
   143  The following attributes are exported:
   144  
   145   * `ip_address` - The IP address of the container as read from its
   146     NetworkSettings.
   147   * `ip_prefix_length` - The IP prefix length of the container as read from its
   148     NetworkSettings.
   149   * `gateway` - The network gateway of the container as read from its
   150     NetworkSettings.
   151   * `bridge` - The network bridge of the container as read from its
   152     NetworkSettings.