How-to: Configure Docker containers (Commands)

Overview

This example illustrates how the Docker plugin can be used to configure a Docker container, more specifically commands, as part of the container creation.

The volumes used by the container can also be configured in the dockerfile through usage of the CMD command.

Extension of another example

This example modifies the container configuration example How-to: Configure Docker containers (Exposed ports).

Please consult that example for details about Pineapple configuration, modules and models describes how Pineapple can be used to install Docker on a Vagrant box for the purpose of the example.

Define the module model

The model file for definition of the image and the container:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mmd:models xmlns:mmd="http://pineapple.dev.java.net/ns/module_model_1_0"       
    xmlns:dkp="http://pineapple.dev.java.net/ns/plugin/docker_1_0" continue="false" >
  <mmd:model target-resource="docker-node" target-operation="deploy-configuration" description="Define Docker image: busybox:latest" >
    <mmd:content>
      <dkp:docker>
        <dkp:image repository="busybox" tag="latest" />
      </dkp:docker>                       
    </mmd:content>
  </mmd:model>
  <mmd:model target-resource="docker-node" description="Define Docker container alpha01" >
    <mmd:content>
      <dkp:docker>
        <dkp:container name="alpha01" state="running" >
          <dkp:image repository="docker.io/busybox" tag="latest" />
          <dkp:configuration>
            <dkp:cmd>/bin/sh</dkp:cmd>
          </dkp:configuration>
        </dkp:container>        
      </dkp:docker>                       
    </mmd:content>
  </mmd:model>
</mmd:models>

The configuration details

Definition of the container

The second model contains the dkp:container element which defines a Docker container. When the model is invoked with the deploy-configuration operation then the container is created. When the model is invoked with the undeploy-configuration operation then the container is deleted.

Configuration of the container

The container element contains an optional configuration element. The element supports detailed configuration of the container.

The element is used in this example to the define a shell command for the busybox container.

Configuration of multiple commands

Multiple commands are defined within the same cmd element with a space in between:

  <dkp:configuration>
    <dkp:cmd>/bin/sh date</dkp:cmd>  
  </dkp:configuration>