Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upated docker_image_module proposal #14730

Merged
merged 1 commit into from
Mar 21, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
207 changes: 207 additions & 0 deletions docs/proposals/docker/docker_image_module.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@

# Docker_Image Module Proposal

## Purpose and Scope

The purpose is to update the existing docker_image module. The updates include expanding the module's capabilities to
match the build, load, pull, push, rmi, and save docker commands and adding support for remote registries.

Docker_image will manage images using docker-py to communicate with either a local or remote API. It will
support API versions >= 1.14. API connection details will be handled externally in a shared utility module similar
to how other cloud modules operate.

## Parameters

Docker_image will support the parameters listed below. API connection parameters will be part of a shared utility
module as mentioned above.

```
archive_path:
description:
- Save image to the provided path. Use with state present to always save the image to a tar archive. If
intermediate directories in the path do not exist, they will be created. If a matching
archive already exists, it will be overwritten.
default: null

config_path:
description:
- Path to a custom docker config file. Docker-py defaults to using ~/.docker/config.json.

cgroup_parent:
description:
- Optional parent cgroup for build containers.
default: null

cpu_shares:
description:
- CPU shares for build containers. Integer value.
default: 0

cpuset_cpus:
description:
- CPUs in which to allow build container execution C(1,3) or C(1-3).
default: null

dockerfile:
description:
- Name of dockerfile to use when building an image.
default: Dockerfile

email:
description:
- The email for the registry account. Provide with username and password when credentials are not encoded
in docker configuration file or when encoded credentials should be updated.
default: null
nolog: true

force:
description:
- Use with absent state to un-tag and remove all images matching the specified name. Use with present state to
force a pull or rebuild of the image.
default: false

load_path:
description:
- Use with state present to load a previously save image. Provide the full path to the image archive file.
default: null

memory:
description:
- Build container limit. Memory limit specified as a positive integer for number of bytes.

memswap:
description:
- Build container limit. Total memory (memory + swap). Specify as a positive integer for number of bytes or
-1 to disable swap.
default: null

name:
description:
- Image name or ID.
required: true

nocache:
description:
- Do not use cache when building an image.
deafult: false

password:
description:
- Password used when connecting to the registry. Provide with username and email when credentials are not encoded
in docker configuration file or when encoded credentials should be updated.
default: null
nolog: true

path:
description:
- Path to Dockerfile and context from which to build an image.
default: null

push:
description:
- Use with state present to always push an image to the registry.
default: false

registry:
description:
- URL of the registry. If not provided, defaults to Docker Hub.
default: null

rm:
description:
- Remove intermediate containers after build.
default: true

tag:
description:
- Image tags. When pulling or pushing, set to 'all' to include all tags.
default: latest

url:
description:
- The location of a Git repository. The repository acts as the context when building an image.
- Mutually exclusive with path.

username:
description:
- Username used when connecting to the registry. Provide with password and email when credentials are not encoded
in docker configuration file or when encoded credentials should be updated.
default: null
nolog: true

state:
description:
- "absent" - if image exists, unconditionally remove it. Use the force option to un-tag and remove all images
matching the provided name.
- "present" - check if image is present with the provided tag. If the image is not present or the force option
is used, the image will either be pulled from the registry, built or loaded from an archive. To build the image,
provide a path or url to the context and Dockerfile. To load an image, use load_path to provide a path to
an archive file. If no path, url or load_path is provided, the image will be pulled. Use the registry
parameters to control the registry from which the image is pulled.

required: false
default: present
choices:
- absent
- present

http_timeout:
description:
- Timeout for HTTP requests during the image build operation. Provide a positive integer value for the number of
seconds.
default: null

```


## Examples

```
- name: build image
docker_image:
path: "/path/to/build/dir"
name: "my_app"
tags:
- v1.0
- mybuild

- name: force pull an image and all tags
docker_image:
name: "my/app"
force: yes
tags: all

- name: untag and remove image
docker_image:
name: "my/app"
state: absent
force: yes

- name: push an image to Docker Hub with all tags
docker_image:
name: my_image
push: yes
tags: all

- name: pull image from a private registry
docker_image:
name: centos
registry: https://private_registry:8080

```


## Returns

```
{
changed: True
failed: False
rc: 0
action: built | pulled | loaded | removed | none
msg: < text confirming the action that was taken >
results: {
< output from docker inspect for the affected image >
}
}
```