Docker tools for Ops.
Simple script to spawn multiple docker "VM" and shared directory to test apps.
This is not a script for production. The purpose of this script is to help Ops people to quiclky spawn multiple VM with network to test new apps.
This script create X containers + one share storage in a container. You can reset each of them in one line command with a given image name.
Features :
- Create shared directory between containers (/share)
- Create shared directory between containers and host (/host)
- Datas in shared directory are persistant !
- Create or reset container (nodeX) with a given image name.
- Reset share container.
- NodeX containers are accessible with docker attach.
- Launch first boot command in nodeX containers
- Containers etc/hosts file dynamically filled.
Architecture :
Shared directories with the host
+
|
+--------------------------------------------+
| | |
+------+------+ +------+------+ +-------+-----+
| Node1 | | NodeX | | Node4 |
+-----+-------+ +------+------+ +-------+-----+
| | |
+---------------------------------------------+
|
+----------------------------+----------------------------+
| /Share |
+---------------------------------------------------------+
Usage :
./docker_setup.py --help
usage: docker_setup.py [-h] [-c] [-u] [--create-share] [-v host:container]
[--command command] [-i IMAGE] [--cleanup]
optional arguments:
-h, --help show this help message and exit
-c, --create Create or recreate the stack
-u, --dns-update update /etc/hosts file in the stack
--create-share Create or recreate the shared volume/container between
containers
-v host:container, --host-volume host:container
This argument can be specified multiple times. Specify
path on the host you want to share with containers. Ex
/tmp:/opt. (This is applied only when create/recreate
the stack)
--command command First boot command to execute after start all
container (This is applied only when create/recreate
the stack)
-i IMAGE, --image IMAGE
Give image for stack create
-s SIZE, --size SIZE Indicate the stack size (number of containers
--cleanup Remove all elements from this stack
Create or recreate a shared volume between containers:
python docker_setup.py --create-share
Create or recreate the stack with a given image.
python docker_setup.py --create --image myimage:01
Create the stack with 2 directory shared from the host
python docker_setup.py --create --host-volume /opt:/opt --host-volume /.../scripts:/scripts
Create the stack and exec boot command after the stack creation :
python docker_setup.py --create --host-volume /.../scripts:/scripts --command /script/init.sh
Update /etc/hosts file in case you reboot containers and private IP change.
python docker_setup.py --dns-update
Remove all containers handled by this script
python docker_setup.py --cleanup