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 --version v1.0.0-rc.1
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