docker mixin

This is a Docker mixin for Porter. The mixin provides the Docker CLI.

Source: Source: https://github.com/getporter/docker-mixin

Install or Upgrade

porter mixin install docker

Required Extension

To declare that Docker access is required to run the bundle, as will probably always be the case when using this mixin, we can add docker (the extension name) under the required section in the manifest, like so:

required:
  - docker

Additional configuration for this extension is currently limited to whether or not the container should run as privileged or not:

required:
  - docker:
      privileged: false

Declaring this extension as required is a great way to let potential users of your bundle know that Docker access is necessary to install.

See more information via the Porter documentation.

Mixin Declaration

To use this mixin in a bundle, declare it like so:

mixins:
- docker

Mixin Configuration

The Docker client version can be specified via the clientVersion configuration when declaring this mixin. The default client version is currently set to 19.03.8.

- docker:
    clientVersion: 19.03.8

Mixin Commands

The commands available are docker pull, push, build, run, remove, and login.

Mixin Syntax & Examples

The same syntax applies for install, upgrade, and uninstall.

Docker pull

Syntax

You can specify either the tag or the digest.

- docker:
    description: "Description of the command"
    pull:
      name: IMAGE_NAME
      tag: IMAGE_TAG
      digest: IMAGE_DIGEST
      arguments:
      - arg1
      - arg2
      flags:
        FLAGNAME: FLAGVALUE
        REPEATED_FLAG:
        - FLAGVALUE1
        - FLAGVALUE2

Example

- docker:
    description: "Install Whalesay"
    pull:
      name: docker/whalesay
      tag: latest

Docker push

Syntax

- docker:
    description: "Description of the command"
    push:
      name: IMAGE_NAME
      tag: IMAGE_TAG
      arguments:
      - arg1
      - arg2
      flags:
        FLAGNAME: FLAGVALUE
        REPEATED_FLAG:
        - FLAGVALUE1
        - FLAGVALUE2

Example

- docker:
    description: "Push image"
    push:
      name: gmadhok/cookies
      tag: v1.0

Docker build

Syntax

- docker:
    description: "Description of the command"
    build:
      tag: IMAGE_TAG
      file: Dockerfile #OPTIONAL
      path: PATH #defaults to "." OPTIONAL
      arguments:
      - arg1
      - arg2
      flags:
        FLAGNAME: FLAGVALUE
        REPEATED_FLAG:
        - FLAGVALUE1
        - FLAGVALUE2

Example

- docker:
    description: "Build image"
    build:
      tag: "gmadhok/cookies:v1.0"
      file: Dockerfile

Docker run

Syntax

- docker:
    description: "Description of the command"
    run:
      image: IMAGE
      name: NAME 
      detach: BOOL #defaults to false
      ports:
        - host: NUMBER # porter exposed on the host
          container: NUMBER # port exposed by the container
      env:
        variable: VALUE
      privileged: BOOL #defaults to false
      rm: BOOL #defaults to false
      command: COMMAND
      arguments:
      - arg1
      - arg2
      flags:
        FLAGNAME: FLAGVALUE
        REPEATED_FLAG:
        - FLAGVALUE1
        - FLAGVALUE2
      suppress-output: BOOL #defaults to false

Example

 - docker:
    description: "Run Whalesay"
    run:
      name: mixinpractice
      image: "docker/whalesay:latest"
      detach: true
      ports:
        - host: 8080
          container: 80
      env:
        myvar: "whales"
      privileged: true
      rm: true
      command: cowsay
      arguments:
         - "Hello World"

Docker remove

Syntax

- docker:
    description: "Description of the command"
    remove:
      container: CONTAINER_NAME
      force: BOOL #defaults to false
      arguments:
      - arg1
      - arg2
      flags:
        FLAGNAME: FLAGVALUE
        REPEATED_FLAG:
        - FLAGVALUE1
        - FLAGVALUE2

Example

- docker:
    description: "Remove mixinpractice"
    remove:
      container: mixinpractice
      force: true

Docker login

Syntax

Username and password are optional because the mixin will default to using environment variables provided by DOCKER_USERNAME and DOCKER_PASSWORD from a parameter or a credential. See an example for how to use docker login and securely provide your username and password.

- docker:
    description: "Description of the command"
    login: 
      username: USERNAME #OPTIONAL
      password: PASSWORD #OPTIONAL
      arguments:
      - arg1
      - arg2
      flags:
        FLAGNAME: FLAGVALUE
        REPEATED_FLAG:
        - FLAGVALUE1
        - FLAGVALUE2

Example

- docker:
    description: "Login to docker"
    login:

Invocation

Use of this mixin requires opting-in to Docker host access via a Porter setting. See the Porter documentation for further details.

Here we opt-in via the CLI flag, --allow-docker-host-access:

$ porter install --allow-docker-host-access