Remove docker documentation from website
This commit is contained in:
parent
c3e48ebb71
commit
10e1573930
|
@ -1,529 +0,0 @@
|
|||
---
|
||||
description: >
|
||||
The docker Packer builder builds Docker images using Docker. The builder
|
||||
starts
|
||||
|
||||
a Docker container, runs provisioners within this container, then exports the
|
||||
|
||||
container for reuse or commits the image.
|
||||
page_title: Docker - Builders
|
||||
sidebar_title: Docker
|
||||
---
|
||||
|
||||
# Docker Builder
|
||||
|
||||
Type: `docker`
|
||||
Artifact BuilderId: `packer.docker`
|
||||
|
||||
The `docker` Packer builder builds [Docker](https://www.docker.io) images using
|
||||
Docker. The builder starts a Docker container, runs provisioners within this
|
||||
container, then exports the container for reuse or commits the image.
|
||||
|
||||
Packer builds Docker containers _without_ the use of
|
||||
[Dockerfiles](https://docs.docker.com/engine/reference/builder/). By not using
|
||||
`Dockerfiles`, Packer is able to provision containers with portable scripts or
|
||||
configuration management systems that are not tied to Docker in any way. It
|
||||
also has a simple mental model: you provision containers much the same way you
|
||||
provision a normal virtualized or dedicated server. For more information, read
|
||||
the section on [Dockerfiles](#dockerfiles).
|
||||
|
||||
The Docker builder must run on a machine that has Docker Engine installed.
|
||||
Therefore the builder only works on machines that support Docker and _does not
|
||||
support running on a Docker remote host_. You can learn about what [platforms
|
||||
Docker supports and how to install onto
|
||||
them](https://docs.docker.com/engine/installation/) in the Docker
|
||||
documentation.
|
||||
|
||||
## Basic Example: Export
|
||||
|
||||
Below is a fully functioning example. It doesn't do anything useful, since no
|
||||
provisioners are defined, but it will effectively repackage an image.
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "docker",
|
||||
"image": "ubuntu",
|
||||
"export_path": "image.tar"
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
source "docker" "example" {
|
||||
image = "ubuntu"
|
||||
export_path = "image.tar"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.docker.example"]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Basic Example: Commit
|
||||
|
||||
Below is another example, the same as above but instead of exporting the
|
||||
running container, this one commits the container to an image. The image can
|
||||
then be more easily tagged, pushed, etc.
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "docker",
|
||||
"image": "ubuntu",
|
||||
"commit": true
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
source "docker" "example" {
|
||||
image = "ubuntu"
|
||||
commit = true
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.docker.example"]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Basic Example: Changes to Metadata
|
||||
|
||||
Below is an example using the changes argument of the builder. This feature
|
||||
allows the source images metadata to be changed when committed back into the
|
||||
Docker environment. It is derived from the `docker commit --change` command
|
||||
line [option to
|
||||
Docker](https://docs.docker.com/engine/reference/commandline/commit/).
|
||||
|
||||
Example uses of all of the options, assuming one is building an NGINX image
|
||||
from ubuntu as an simple example:
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "docker",
|
||||
"image": "ubuntu",
|
||||
"commit": true,
|
||||
"changes": [
|
||||
"USER www-data",
|
||||
"WORKDIR /var/www",
|
||||
"ENV HOSTNAME www.example.com",
|
||||
"VOLUME /test1 /test2",
|
||||
"EXPOSE 80 443",
|
||||
"LABEL version=1.0",
|
||||
"ONBUILD RUN date",
|
||||
"CMD [\"nginx\", \"-g\", \"daemon off;\"]",
|
||||
"ENTRYPOINT /var/www/start.sh"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
source "docker" "example" {
|
||||
image = "ubuntu"
|
||||
commit = true
|
||||
changes = [
|
||||
"USER www-data",
|
||||
"WORKDIR /var/www",
|
||||
"ENV HOSTNAME www.example.com",
|
||||
"VOLUME /test1 /test2",
|
||||
"EXPOSE 80 443",
|
||||
"LABEL version=1.0",
|
||||
"ONBUILD RUN date",
|
||||
"CMD [\"nginx\", \"-g\", \"daemon off;\"]",
|
||||
"ENTRYPOINT /var/www/start.sh"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
Allowed metadata fields that can be changed are:
|
||||
|
||||
- CMD
|
||||
- String, supports both array (escaped) and string form
|
||||
- EX: `"CMD [\"nginx\", \"-g\", \"daemon off;\"]"` corresponds to Docker exec form
|
||||
- EX: `"CMD nginx -g daemon off;"` corresponds to Docker shell form, invokes a command shell first
|
||||
- ENTRYPOINT
|
||||
- String, supports both array (escaped) and string form
|
||||
- EX: `"ENTRYPOINT [\"/bin/sh\", \"-c\", \"/var/www/start.sh\"]"` corresponds to Docker exec form
|
||||
- EX: `"ENTRYPOINT /var/www/start.sh"` corresponds to Docker shell form, invokes a command shell first
|
||||
- ENV
|
||||
- String, note there is no equal sign:
|
||||
- EX: `"ENV HOSTNAME www.example.com"` not
|
||||
`"ENV HOSTNAME=www.example.com"`
|
||||
- EXPOSE
|
||||
- String, space separated ports
|
||||
- EX: `"EXPOSE 80 443"`
|
||||
- LABEL
|
||||
- String, space separated key=value pairs
|
||||
- EX: `"LABEL version=1.0"`
|
||||
- ONBUILD
|
||||
- String
|
||||
- EX: `"ONBUILD RUN date"`
|
||||
- MAINTAINER
|
||||
- String, deprecated in Docker version 1.13.0
|
||||
- EX: `"MAINTAINER NAME"`
|
||||
- USER
|
||||
- String
|
||||
- EX: `"USER USERNAME"`
|
||||
- VOLUME
|
||||
- String
|
||||
- EX: `"VOLUME FROM TO"`
|
||||
- WORKDIR
|
||||
- String
|
||||
- EX: `"WORKDIR PATH"`
|
||||
|
||||
## Configuration Reference
|
||||
|
||||
Configuration options are organized below into two categories: required and
|
||||
optional. Within each category, the available options are alphabetized and
|
||||
described.
|
||||
|
||||
The Docker builder uses a special Docker communicator _and will not use_ the
|
||||
standard [communicators](/docs/templates/legacy_json_templates/communicator).
|
||||
|
||||
### Required:
|
||||
|
||||
You must specify (only) one of `commit`, `discard`, or `export_path`.
|
||||
|
||||
@include 'builder/docker/Config-required.mdx'
|
||||
|
||||
### Optional:
|
||||
|
||||
@include 'builder/docker/AwsAccessConfig-not-required.mdx'
|
||||
|
||||
@include 'builder/docker/Config-not-required.mdx'
|
||||
|
||||
## Build Shared Information Variables
|
||||
|
||||
This build shares generated data with provisioners and post-processors via [template engines](/docs/templates/legacy_json_templates/engine)
|
||||
for JSON and [contextual variables](/docs/templates/hcl_templates/contextual-variables) for HCL2.
|
||||
|
||||
The generated variable available for this builder is:
|
||||
|
||||
- `ImageSha256` - When committing a container to an image, this will give the image SHA256. Because the image is not available at the provision step,
|
||||
this variable is only available for post-processors.
|
||||
|
||||
## Using the Artifact: Export
|
||||
|
||||
Once the tar artifact has been generated, you will likely want to import, tag,
|
||||
and push it to a container repository. Packer can do this for you automatically
|
||||
with the [docker-import](/docs/post-processors/docker-import) and
|
||||
[docker-push](/docs/post-processors/docker-push) post-processors.
|
||||
|
||||
**Note:** This section is covering how to use an artifact that has been
|
||||
_exported_. More specifically, if you set `export_path` in your configuration.
|
||||
If you set `commit`, see the next section.
|
||||
|
||||
The example below shows a full configuration that would import and push the
|
||||
created image. This is accomplished using a sequence definition (a collection
|
||||
of post-processors that are treated as as single pipeline, see
|
||||
[Post-Processors](/docs/templates/legacy_json_templates/post-processors) for more information):
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"post-processors": [
|
||||
[
|
||||
{
|
||||
"type": "docker-import",
|
||||
"repository": "myrepo/myimage",
|
||||
"tag": "0.7"
|
||||
},
|
||||
{
|
||||
"type": "docker-push"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processors {
|
||||
post-processor "docker-import" {
|
||||
repository = "myrepo/myimage"
|
||||
tag = ["0.7"]
|
||||
}
|
||||
post-processor "docker-push" {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
In the above example, the result of each builder is passed through the defined
|
||||
sequence of post-processors starting first with the `docker-import`
|
||||
post-processor which will import the artifact as a docker image. The resulting
|
||||
docker image is then passed on to the `docker-push` post-processor which
|
||||
handles pushing the image to a container repository.
|
||||
|
||||
If you want to do this manually, however, perhaps from a script, you can import
|
||||
the image using the process below:
|
||||
|
||||
```shell-session
|
||||
$ docker import - registry.mydomain.com/mycontainer:latest < artifact.tar
|
||||
```
|
||||
|
||||
You can then add additional tags and push the image as usual with `docker tag`
|
||||
and `docker push`, respectively.
|
||||
|
||||
## Using the Artifact: Committed
|
||||
|
||||
If you committed your container to an image, you probably want to tag, save,
|
||||
push, etc. Packer can do this automatically for you. An example is shown below
|
||||
which tags and pushes an image. This is accomplished using a sequence
|
||||
definition (a collection of post-processors that are treated as as single
|
||||
pipeline, see [Post-Processors](/docs/templates/legacy_json_templates/post-processors) for more
|
||||
information):
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"post-processors": [
|
||||
[
|
||||
{
|
||||
"type": "docker-tag",
|
||||
"repository": "myrepo/myimage",
|
||||
"tag": "0.7"
|
||||
},
|
||||
{
|
||||
"type": "docker-push"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processors {
|
||||
post-processor "docker-tag" {
|
||||
repository = "myrepo/myimage"
|
||||
tag = ["0.7"]
|
||||
}
|
||||
post-processor "docker-push" {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
In the above example, the result of each builder is passed through the defined
|
||||
sequence of post-processors starting first with the `docker-tag` post-processor
|
||||
which tags the committed image with the supplied repository and tag
|
||||
information. Once tagged, the resulting artifact is then passed on to the
|
||||
`docker-push` post-processor which handles pushing the image to a container
|
||||
repository.
|
||||
|
||||
Going a step further, if you wanted to tag and push an image to multiple
|
||||
container repositories, this could be accomplished by defining two,
|
||||
nearly-identical sequence definitions, as demonstrated by the example below:
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"post-processors": [
|
||||
[
|
||||
{
|
||||
"type": "docker-tag",
|
||||
"repository": "myrepo/myimage1",
|
||||
"tag": "0.7"
|
||||
},
|
||||
"docker-push"
|
||||
],
|
||||
[
|
||||
{
|
||||
"type": "docker-tag",
|
||||
"repository": "myrepo/myimage2",
|
||||
"tag": "0.7"
|
||||
},
|
||||
"docker-push"
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processors {
|
||||
post-processor "docker-tag" {
|
||||
repository = "myrepo/myimage1"
|
||||
tag = ["0.7"]
|
||||
}
|
||||
post-processor "docker-push" {}
|
||||
}
|
||||
post-processors {
|
||||
post-processor "docker-tag" {
|
||||
repository = "myrepo/myimage2"
|
||||
tag = ["0.7"]
|
||||
}
|
||||
post-processor "docker-push" {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<span id="amazon-ec2-container-registry"></span>
|
||||
|
||||
## Docker For Windows
|
||||
|
||||
You should be able to run docker builds against both linux and Windows
|
||||
containers. Windows containers use a different communicator than linux
|
||||
containers, because Windows containers cannot use `docker cp`.
|
||||
|
||||
If you are building a Windows container, you must set the template option
|
||||
`"windows_container": true`. Please note that docker cannot export Windows
|
||||
containers, so you must either commit or discard them.
|
||||
|
||||
The following is a fully functional template for building a Windows
|
||||
container.
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"builders": [
|
||||
{
|
||||
"type": "docker",
|
||||
"image": "microsoft/windowsservercore:1709",
|
||||
"container_dir": "c:/app",
|
||||
"windows_container": true,
|
||||
"commit": true
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
source "docker" "windows" {
|
||||
image = "ubuntu"
|
||||
container_dir = "c:/app"
|
||||
windows_container = true
|
||||
commit = true
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.docker.example"]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Amazon EC2 Container Registry
|
||||
|
||||
Packer can tag and push images for use in [Amazon EC2 Container
|
||||
Registry](https://aws.amazon.com/ecr/). The post processors work as described
|
||||
above and example configuration properties are shown below:
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"post-processors": [
|
||||
[
|
||||
{
|
||||
"type": "docker-tag",
|
||||
"repository": "12345.dkr.ecr.us-east-1.amazonaws.com/packer",
|
||||
"tag": "0.7"
|
||||
},
|
||||
{
|
||||
"type": "docker-push",
|
||||
"ecr_login": true,
|
||||
"aws_access_key": "YOUR KEY HERE",
|
||||
"aws_secret_key": "YOUR SECRET KEY HERE",
|
||||
"login_server": "https://12345.dkr.ecr.us-east-1.amazonaws.com/"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processors {
|
||||
post-processor "docker-tag" {
|
||||
repository = "12345.dkr.ecr.us-east-1.amazonaws.com/packer"
|
||||
tag = ["0.7"]
|
||||
}
|
||||
post-processor "docker-push" {
|
||||
ecr_login = true
|
||||
aws_access_key = "YOUR KEY HERE"
|
||||
aws_secret_key = "YOUR SECRET KEY HERE"
|
||||
login_server = "https://12345.dkr.ecr.us-east-1.amazonaws.com/"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
[Learn how to set Amazon AWS
|
||||
credentials.](/docs/builders/amazon#specifying-amazon-credentials)
|
||||
|
||||
## Dockerfiles
|
||||
|
||||
This builder allows you to build Docker images _without_ Dockerfiles.
|
||||
|
||||
With this builder, you can repeatedly create Docker images without the use of a
|
||||
Dockerfile. You don't need to know the syntax or semantics of Dockerfiles.
|
||||
Instead, you can just provide shell scripts, Chef recipes, Puppet manifests,
|
||||
etc. to provision your Docker container just like you would a regular
|
||||
virtualized or dedicated machine.
|
||||
|
||||
While Docker has many features, Packer views Docker simply as a container
|
||||
runner. To that end, Packer is able to repeatedly build these containers using
|
||||
portable provisioning scripts.
|
||||
|
||||
## Overriding the host directory
|
||||
|
||||
By default, Packer creates a temporary folder under your home directory, and
|
||||
uses that to stage files for uploading into the container. If you would like to
|
||||
change the path to this temporary folder, you can set the `PACKER_TMP_DIR`.
|
||||
This can be useful, for example, if you have your home directory permissions
|
||||
set up to disallow access from the docker daemon.
|
|
@ -1,217 +0,0 @@
|
|||
---
|
||||
description: |
|
||||
The Packer Docker import post-processor takes an artifact from the docker
|
||||
builder and imports it with Docker locally. This allows you to apply a
|
||||
repository and tag to the image and lets you use the other Docker
|
||||
post-processors such as docker-push to push the image to a registry.
|
||||
page_title: Docker Import - Post-Processors
|
||||
sidebar_title: Docker Import
|
||||
---
|
||||
|
||||
# Docker Import Post-Processor
|
||||
|
||||
Type: `docker-import`
|
||||
Artifact BuilderId: `packer.post-processor.docker-import`
|
||||
|
||||
The Packer Docker import post-processor takes an artifact from the [docker
|
||||
builder](/docs/builders/docker) and imports it with Docker locally. This
|
||||
allows you to apply a repository and tag to the image and lets you use the
|
||||
other Docker post-processors such as
|
||||
[docker-push](/docs/post-processors/docker-push) to push the image to a
|
||||
registry.
|
||||
|
||||
## Basic Example
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"builders": [
|
||||
{
|
||||
"type": "docker",
|
||||
"image": "ubuntu:18.04",
|
||||
"export_path": "party_parrot.tar"
|
||||
}
|
||||
],
|
||||
"post-processors": [
|
||||
{
|
||||
"type": "docker-import",
|
||||
"repository": "local/ubuntu",
|
||||
"tag": "latest"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
source "docker" "example" {
|
||||
image = "ubuntu:18.04"
|
||||
export_path = "party_parrot.tar"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = [
|
||||
"source.docker.example"
|
||||
]
|
||||
|
||||
post-processor "docker-import" {
|
||||
repository = "local/ubuntu"
|
||||
tag = "latest"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Configuration
|
||||
|
||||
The configuration for this post-processor only requires a `repository`, a `tag`
|
||||
is optional.
|
||||
|
||||
### Required:
|
||||
|
||||
- `repository` (string) - The repository of the imported image.
|
||||
|
||||
### Optional:
|
||||
|
||||
- `tag` (string) - The tag for the imported image. By default this is not
|
||||
set.
|
||||
|
||||
- `changes` (array of strings) - Dockerfile instructions to add to the
|
||||
commit. Example of instructions are `CMD`, `ENTRYPOINT`, `ENV`, and
|
||||
`EXPOSE`. Example: `[ "USER ubuntu", "WORKDIR /app", "EXPOSE 8080" ]`
|
||||
|
||||
- `keep_input_artifact` (boolean) - if true, do not delete the source tar
|
||||
after importing it to docker. Defaults to false.
|
||||
|
||||
## Example
|
||||
|
||||
An example is shown below, showing only the post-processor configuration:
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "docker-import",
|
||||
"repository": "hashicorp/packer",
|
||||
"tag": "0.7"
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processor "docker-import" {
|
||||
repository = "hashicorp/packer"
|
||||
tag = "0.7"
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
This example would take the image created by the Docker builder and import it
|
||||
into the local Docker process with a name of `hashicorp/packer:0.7`.
|
||||
|
||||
Following this, you can use the
|
||||
[docker-push](/docs/post-processors/docker-push) post-processor to push it
|
||||
to a registry, if you want.
|
||||
|
||||
## Changing Metadata
|
||||
|
||||
Below is an example using the changes argument of the post-processor. This
|
||||
feature allows the tarball metadata to be changed when imported into the Docker
|
||||
environment. It is derived from the `docker import --change` command line
|
||||
[option to
|
||||
Docker](https://docs.docker.com/engine/reference/commandline/import/).
|
||||
|
||||
Example uses of all of the options, assuming one is building an NGINX image
|
||||
from ubuntu as an simple example:
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "docker-import",
|
||||
"repository": "local/centos6",
|
||||
"tag": "latest",
|
||||
"changes": [
|
||||
"USER www-data",
|
||||
"WORKDIR /var/www",
|
||||
"ENV HOSTNAME www.example.com",
|
||||
"VOLUME /test1 /test2",
|
||||
"EXPOSE 80 443",
|
||||
"LABEL version=1.0",
|
||||
"ONBUILD RUN date",
|
||||
"CMD [\"nginx\", \"-g\", \"daemon off;\"]",
|
||||
"ENTRYPOINT /var/www/start.sh"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processor "docker-import" {
|
||||
repository = "local/centos6"
|
||||
tag = "latest"
|
||||
changes = [
|
||||
"USER www-data",
|
||||
"WORKDIR /var/www",
|
||||
"ENV HOSTNAME www.example.com",
|
||||
"VOLUME /test1 /test2",
|
||||
"EXPOSE 80 443",
|
||||
"LABEL version=1.0",
|
||||
"ONBUILD RUN date",
|
||||
"CMD [\"nginx\", \"-g\", \"daemon off;\"]",
|
||||
"ENTRYPOINT /var/www/start.sh",
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
Allowed metadata fields that can be changed are:
|
||||
|
||||
- CMD
|
||||
- String, supports both array (escaped) and string form
|
||||
- EX: `"CMD [\"nginx\", \"-g\", \"daemon off;\"]"`
|
||||
- EX: `"CMD nginx -g daemon off;"`
|
||||
- ENTRYPOINT
|
||||
- String
|
||||
- EX: `"ENTRYPOINT /var/www/start.sh"`
|
||||
- ENV
|
||||
- String, note there is no equal sign:
|
||||
- EX: `"ENV HOSTNAME www.example.com"` not
|
||||
`"ENV HOSTNAME=www.example.com"`
|
||||
- EXPOSE
|
||||
- String, space separated ports
|
||||
- EX: `"EXPOSE 80 443"`
|
||||
- LABEL
|
||||
- String, space separated key=value pairs
|
||||
- EX: `"LABEL version=1.0"`
|
||||
- ONBUILD
|
||||
- String
|
||||
- EX: `"ONBUILD RUN date"`
|
||||
- MAINTAINER
|
||||
- String, deprecated in Docker version 1.13.0
|
||||
- EX: `"MAINTAINER NAME"`
|
||||
- USER
|
||||
- String
|
||||
- EX: `"USER USERNAME"`
|
||||
- VOLUME
|
||||
- String
|
||||
- EX: `"VOLUME FROM TO"`
|
||||
- WORKDIR
|
||||
- String
|
||||
- EX: `"WORKDIR PATH"`
|
|
@ -1,69 +0,0 @@
|
|||
---
|
||||
description: |
|
||||
The Packer Docker push post-processor takes an artifact from the docker-import
|
||||
post-processor and pushes it to a Docker registry.
|
||||
page_title: Docker Push - Post-Processors
|
||||
sidebar_title: Docker Push
|
||||
---
|
||||
|
||||
# Docker Push Post-Processor
|
||||
|
||||
Type: `docker-push`
|
||||
Artifact BuilderId: `packer.post-processor.docker-import`
|
||||
|
||||
The Packer Docker push post-processor takes an artifact from the
|
||||
[docker-import](/docs/post-processors/docker-import) post-processor and
|
||||
pushes it to a Docker registry.
|
||||
|
||||
## Configuration
|
||||
|
||||
This post-processor has only optional configuration:
|
||||
|
||||
- `aws_access_key` (string) - The AWS access key used to communicate with
|
||||
AWS. [Learn how to set
|
||||
this.](/docs/builders/amazon#specifying-amazon-credentials)
|
||||
|
||||
- `aws_secret_key` (string) - The AWS secret key used to communicate with
|
||||
AWS. [Learn how to set
|
||||
this.](/docs/builders/amazon#specifying-amazon-credentials)
|
||||
|
||||
- `aws_token` (string) - The AWS access token to use. This is different from
|
||||
the access key and secret key. If you're not sure what this is, then you
|
||||
probably don't need it. This will also be read from the `AWS_SESSION_TOKEN`
|
||||
environmental variable.
|
||||
|
||||
- `aws_profile` (string) - The AWS shared credentials profile used to
|
||||
communicate with AWS. [Learn how to set
|
||||
this.](/docs/builders/amazon#specifying-amazon-credentials)
|
||||
|
||||
- `ecr_login` (boolean) - Defaults to false. If true, the post-processor will
|
||||
login in order to push the image to [Amazon EC2 Container Registry
|
||||
(ECR)](https://aws.amazon.com/ecr/). The post-processor only logs in for
|
||||
the duration of the push. If true `login_server` is required and `login`,
|
||||
`login_username`, and `login_password` will be ignored.
|
||||
|
||||
- `keep_input_artifact` (boolean) - if true, do not delete the docker image
|
||||
after pushing it to the cloud. Defaults to true, but can be set to false if
|
||||
you do not need to save your local copy of the docker container.
|
||||
|
||||
- `login` (boolean) - Defaults to false. If true, the post-processor will
|
||||
login prior to pushing. For log into ECR see `ecr_login`.
|
||||
|
||||
- `login_username` (string) - The username to use to authenticate to login.
|
||||
|
||||
- `login_password` (string) - The password to use to authenticate to login.
|
||||
|
||||
- `login_server` (string) - The server address to login to.
|
||||
|
||||
-> **Note:** When using _Docker Hub_ or _Quay_ registry servers, `login`
|
||||
must to be set to `true` and `login_username`, **and** `login_password` must to
|
||||
be set to your registry credentials. When using Docker Hub, `login_server` can
|
||||
be omitted.
|
||||
|
||||
-> **Note:** If you login using the credentials above, the post-processor
|
||||
will automatically log you out afterwards (just the server specified).
|
||||
|
||||
## Example
|
||||
|
||||
For an example of using docker-push, see the section on using generated
|
||||
artifacts from the [docker builder](/docs/builders/docker).
|
|
@ -1,66 +0,0 @@
|
|||
---
|
||||
description: >
|
||||
The Packer Docker Save post-processor takes an artifact from the docker
|
||||
builder
|
||||
|
||||
that was committed and saves it to a file. This is similar to exporting the
|
||||
|
||||
Docker image directly from the builder, except that it preserves the hierarchy
|
||||
|
||||
of images and metadata.
|
||||
page_title: Docker Save - Post-Processors
|
||||
sidebar_title: Docker Save
|
||||
---
|
||||
|
||||
# Docker Save Post-Processor
|
||||
|
||||
Type: `docker-save`
|
||||
Artifact BuilderId: `packer.post-processor.docker-save`
|
||||
|
||||
The Packer Docker Save post-processor takes an artifact from the [docker
|
||||
builder](/docs/builders/docker) that was committed and saves it to a file.
|
||||
This is similar to exporting the Docker image directly from the builder, except
|
||||
that it preserves the hierarchy of images and metadata.
|
||||
|
||||
We understand the terminology can be a bit confusing, but we've adopted the
|
||||
terminology from Docker, so if you're familiar with that, then you'll be
|
||||
familiar with this and vice versa.
|
||||
|
||||
## Configuration
|
||||
|
||||
### Required
|
||||
|
||||
The configuration for this post-processor only requires one option.
|
||||
|
||||
- `path` (string) - The path to save the image.
|
||||
|
||||
### Optional
|
||||
|
||||
- `keep_input_artifact` (boolean) - if true, do not delete the docker
|
||||
container, and only save the .tar created by docker save. Defaults to true.
|
||||
|
||||
## Example
|
||||
|
||||
An example is shown below, showing only the post-processor configuration:
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "docker-save",
|
||||
"path": "foo.tar"
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processors "docker-save" {
|
||||
path = "foo.tar"
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
---
|
||||
description: |
|
||||
The Packer Docker Tag post-processor takes an artifact from the docker builder
|
||||
that was committed and tags it into a repository. This allows you to use the
|
||||
other Docker post-processors such as docker-push to push the image to a
|
||||
registry.
|
||||
page_title: Docker Tag - Post-Processors
|
||||
sidebar_title: Docker Tag
|
||||
---
|
||||
|
||||
# Docker Tag Post-Processor
|
||||
|
||||
Type: `docker-tag`
|
||||
Artifact BuilderId: `packer.post-processor.docker-tag`
|
||||
|
||||
The Packer Docker Tag post-processor takes an artifact from the [docker
|
||||
builder](/docs/builders/docker) that was committed and tags it into a
|
||||
repository. This allows you to use the other Docker post-processors such as
|
||||
[docker-push](/docs/post-processors/docker-push) to push the image to a
|
||||
registry.
|
||||
|
||||
This is very similar to the
|
||||
[docker-import](/docs/post-processors/docker-import) post-processor except
|
||||
that this works with committed resources, rather than exported.
|
||||
|
||||
## Configuration
|
||||
|
||||
The configuration for this post-processor requires `repository`, all other
|
||||
settings are optional.
|
||||
|
||||
- `repository` (string) - The repository of the image.
|
||||
|
||||
- `tags` (array of strings) - A list of tags for the image. By default this is
|
||||
not set. Valid examples include: `"tags": "mytag"` or
|
||||
`"tags": ["mytag-1", "mytag-2"]`
|
||||
|
||||
- `force` (boolean) - If true, this post-processor forcibly tag the image
|
||||
even if tag name is collided. Default to `false`. But it will be ignored if
|
||||
Docker >= 1.12.0 was detected, since the `force` option was removed
|
||||
after 1.12.0.
|
||||
[reference](https://docs.docker.com/engine/deprecated/#/f-flag-on-docker-tag)
|
||||
|
||||
- `keep_input_artifact` (boolean) - Unlike most other post-processors, the
|
||||
keep_input_artifact option will have no effect for the docker-tag
|
||||
post-processor. We will always retain the input artifact for docker-tag,
|
||||
since deleting the image we just tagged is not a behavior anyone should ever
|
||||
expect. `keep_input_artifact will` therefore always be evaluated as true,
|
||||
regardless of the value you enter into this field.
|
||||
|
||||
## Example
|
||||
|
||||
An example is shown below, showing only the post-processor configuration:
|
||||
|
||||
<Tabs>
|
||||
<Tab heading="JSON">
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "docker-tag",
|
||||
"repository": "hashicorp/packer",
|
||||
"tag": "0.7,anothertag"
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
|
||||
<Tab heading="HCL2">
|
||||
|
||||
```hcl
|
||||
post-processors "docker-tag" {
|
||||
repository = "hashicorp/packer"
|
||||
tag = "0.7,anothertag"
|
||||
}
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
|
||||
This example would take the image created by the Docker builder and tag it into
|
||||
the local Docker process with a name of `hashicorp/packer:0.7`.
|
||||
|
||||
Following this, you can use the
|
||||
[docker-push](/docs/post-processors/docker-push) post-processor to push it
|
||||
to a registry, if you want.
|
|
@ -1,18 +0,0 @@
|
|||
<!-- Code generated from the comments of the AwsAccessConfig struct in builder/docker/ecr_login.go; DO NOT EDIT MANUALLY -->
|
||||
|
||||
- `aws_access_key` (string) - The AWS access key used to communicate with
|
||||
AWS. Learn how to set
|
||||
this.
|
||||
|
||||
- `aws_secret_key` (string) - The AWS secret key used to communicate with
|
||||
AWS. Learn how to set
|
||||
this.
|
||||
|
||||
- `aws_token` (string) - The AWS access token to use. This is different from
|
||||
the access key and secret key. If you're not sure what this is, then you
|
||||
probably don't need it. This will also be read from the AWS_SESSION_TOKEN
|
||||
environmental variable.
|
||||
|
||||
- `aws_profile` (string) - The AWS shared credentials profile used to
|
||||
communicate with AWS. Learn how to set
|
||||
this.
|
|
@ -1,74 +0,0 @@
|
|||
<!-- Code generated from the comments of the Config struct in builder/docker/config.go; DO NOT EDIT MANUALLY -->
|
||||
|
||||
- `author` (string) - Set the author (e-mail) of a commit.
|
||||
|
||||
- `changes` ([]string) - Dockerfile instructions to add to the commit. Example of instructions
|
||||
are CMD, ENTRYPOINT, ENV, and EXPOSE. Example: [ "USER ubuntu", "WORKDIR
|
||||
/app", "EXPOSE 8080" ]
|
||||
|
||||
- `container_dir` (string) - The directory inside container to mount temp directory from host server
|
||||
for work [file provisioner](/docs/provisioners/file). This defaults
|
||||
to c:/packer-files on windows and /packer-files on other systems.
|
||||
|
||||
- `device` ([]string) - An array of devices which will be accessible in container when it's run
|
||||
without `--privileged` flag.
|
||||
|
||||
- `cap_add` ([]string) - An array of additional [Linux
|
||||
capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)
|
||||
to grant to the container.
|
||||
|
||||
- `cap_drop` ([]string) - An array of [Linux
|
||||
capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)
|
||||
to drop from the container.
|
||||
|
||||
- `exec_user` (string) - Username (UID) to run remote commands with. You can also set the group
|
||||
name/ID if you want: (UID or UID:GID). You may need this if you get
|
||||
permission errors trying to run the shell or other provisioners.
|
||||
|
||||
- `privileged` (bool) - If true, run the docker container with the `--privileged` flag. This
|
||||
defaults to false if not set.
|
||||
|
||||
- `pull` (bool) - If true, the configured image will be pulled using `docker pull` prior
|
||||
to use. Otherwise, it is assumed the image already exists and can be
|
||||
used. This defaults to true if not set.
|
||||
|
||||
- `run_command` ([]string) - An array of arguments to pass to docker run in order to run the
|
||||
container. By default this is set to `["-d", "-i", "-t",
|
||||
"--entrypoint=/bin/sh", "--", "{{.Image}}"]` if you are using a linux
|
||||
container, and `["-d", "-i", "-t", "--entrypoint=powershell", "--",
|
||||
"{{.Image}}"]` if you are running a windows container. `{{.Image}}` is a
|
||||
template variable that corresponds to the image template option. Passing
|
||||
the entrypoint option this way will make it the default entrypoint of
|
||||
the resulting image, so running docker run -it --rm will start the
|
||||
docker image from the /bin/sh shell interpreter; you could run a script
|
||||
or another shell by running docker run -it --rm -c /bin/bash. If your
|
||||
docker image embeds a binary intended to be run often, you should
|
||||
consider changing the default entrypoint to point to it.
|
||||
|
||||
- `tmpfs` ([]string) - An array of additional tmpfs volumes to mount into this container.
|
||||
|
||||
- `volumes` (map[string]string) - A mapping of additional volumes to mount into this container. The key of
|
||||
the object is the host path, the value is the container path.
|
||||
|
||||
- `fix_upload_owner` (bool) - If true, files uploaded to the container will be owned by the user the
|
||||
container is running as. If false, the owner will depend on the version
|
||||
of docker installed in the system. Defaults to true.
|
||||
|
||||
- `windows_container` (bool) - If "true", tells Packer that you are building a Windows container
|
||||
running on a windows host. This is necessary for building Windows
|
||||
containers, because our normal docker bindings do not work for them.
|
||||
|
||||
- `login` (bool) - This is used to login to dockerhub to pull a private base container. For
|
||||
pushing to dockerhub, see the docker post-processors
|
||||
|
||||
- `login_password` (string) - The password to use to authenticate to login.
|
||||
|
||||
- `login_server` (string) - The server address to login to.
|
||||
|
||||
- `login_username` (string) - The username to use to authenticate to login.
|
||||
|
||||
- `ecr_login` (bool) - Defaults to false. If true, the builder will login in order to pull the
|
||||
image from Amazon EC2 Container Registry (ECR). The builder only logs in
|
||||
for the duration of the pull. If true login_server is required and
|
||||
login, login_username, and login_password will be ignored. For more
|
||||
information see the section on ECR.
|
|
@ -1,14 +0,0 @@
|
|||
<!-- Code generated from the comments of the Config struct in builder/docker/config.go; DO NOT EDIT MANUALLY -->
|
||||
|
||||
- `commit` (bool) - If true, the container will be committed to an image rather than exported.
|
||||
|
||||
- `discard` (bool) - Throw away the container when the build is complete. This is useful for
|
||||
the [artifice
|
||||
post-processor](/docs/post-processors/artifice).
|
||||
|
||||
- `export_path` (string) - The path where the final container will be exported as a tar file.
|
||||
|
||||
- `image` (string) - The base image for the Docker container that will be started. This image
|
||||
will be pulled from the Docker registry if it doesn't already exist.
|
||||
|
||||
- `message` (string) - Set a message for the commit.
|
Loading…
Reference in New Issue