packer-cn/website/source/docs/post-processors/docker-import.html.md

127 lines
3.6 KiB
Markdown
Raw Normal View History

---
2017-06-14 21:04:16 -04:00
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.
2015-07-22 22:31:00 -04:00
layout: docs
2017-06-14 21:04:16 -04:00
page_title: 'Docker Import - Post-Processors'
sidebar_current: 'docs-post-processors-docker-import'
---
# Docker Import Post-Processor
Type: `docker-import`
2015-07-22 22:31:00 -04:00
The Packer Docker import post-processor takes an artifact from the [docker
builder](/docs/builders/docker.html) and imports it with Docker locally. This
2018-10-26 20:02:51 -04:00
allows you to apply a repository and tag to the image and lets you use the
other Docker post-processors such as
2015-07-22 22:31:00 -04:00
[docker-push](/docs/post-processors/docker-push.html) to push the image to a
registry.
## Configuration
The configuration for this post-processor only requires a `repository`, a `tag`
is optional.
### Required:
2017-06-14 21:04:16 -04:00
- `repository` (string) - The repository of the imported image.
### Optional:
2018-10-26 20:02:51 -04:00
- `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:
2017-06-14 21:04:16 -04:00
``` json
{
"type": "docker-import",
"repository": "hashicorp/packer",
"tag": "0.7"
}
```
2015-07-22 22:31:00 -04:00
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
2015-07-22 22:31:00 -04:00
[docker-push](/docs/post-processors/docker-push.html) 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
2019-01-11 17:06:15 -05:00
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:
``` 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"
]
}
```
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"`