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.
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.
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 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.