github.com/nathanielks/terraform@v0.6.1-0.20170509030759-13e1a62319dc/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.