Skip to main content

Create and launch docker containers on multiple hosts.

Project description

docker-launch

PyPI Python Test License

Create and launch docker containers on multiple hosts.

Features

This library provides:

  • SSH public key authentication checker and its set-up command
  • Launch multiple Docker containers on arbitrary host(s), via command line or Python script

Installation

pip install docker-launch

Usage

To check if SSH public key authentication to user@192.168.1.1 is enabled or not, run

>>> from docker_launch import check_connection
>>> check_connection("user@192.168.1.1")
True

or from command line,

$ docker-launch check user@192.168.1.1
OK

If the authentication hasn't been set-up, you can configure it via

docker-launch check user@192.168.1.1 --setup

Once the authentication is set-up, let's prepare configuration file path/to/config.toml

[ros_topics]
baseimg = "ros:humble-ros-core"
command = "env ROS_DOMAIN_ID=1 ros2 topic pub {a} std_msgs/msg/Float64 '{{data: 123.45}}'"
targets = [
    { a = "first", __machine__ = "localhost" },
    { a = "/second", __machine__ = "user@172.29.1.2" },
]

This will spawn

  • ros:humble-ros-core container on the host machine, executing command env ROS_DOMAIN_ID=1 ros2 topic pub first std_msgs/msg/Float64 '{data: 123.45}'
  • ros:humble-ros-core container on user@172.29.1.2, executing command env ROS_DOMAIN_ID=1 ros2 topic pub /second std_msgs/msg/Float64 '{data: 123.45}'

by running

>>> from docker_launch import launch_containers
>>> launch_containers("path/to/config.toml", remove=True)

or

docker-launch up path/to/config.toml --rm

For the details of the options, see docker run documentation and Docker SDK's documentation.

Options of docker run command which docker-launch command and docker_launch.launch_containers() function doesn't support
  • --attach, -a
  • --cgroupns
  • --cidfile
  • --detach, -d (always True)
  • --detach-keys
  • --disable-content-trust
  • --env-file
  • --expose
  • --gpus
  • -h (use --hostname instead)
  • --interactive, -i
  • --ip
  • --ip6
  • --label-file
  • --link-local-ip
  • --log-driver
  • --log-opt
  • --mount
  • --net (only bridge, none, host, and container:<name|id> are supported)
  • --net-alias
  • --network (only bridge, none, host, and container:<name|id> are supported)
  • --network-alias
  • --no-healthcheck
  • --pull
  • --sig-proxy
  • --stop-timeout
  • --ulimit
  • -v (use --volume instead)
Options of Docker SDK's docker.containers.run function which docker-launch command doesn't support (docker_launch.launch_containers() function supports them)
  • auto_remove
  • device_requests
  • init_path
  • log_config
  • lxc_conf
  • mounts
  • nano_cpus
  • network
  • network_disabled
  • stdin_open
  • stdout
  • stderr
  • stream
  • ulimits
  • use_config_proxy
  • version

Configuration File Spec

The configuration is described in TOML format. Required fields are:

  • baseimg (string) - Name of the image from which the containers are created
  • command (string) - Command template to execute in each containers, with Python style placeholder (positional placeholder e.g. {0} isn't supported)
  • targets (array of table) - List of parameter tables for each containers, and special parameter __machine__

The fields above must be grouped in a table.

[table-name]
baseimg = "docker:image-name"
command = "command template with {placeholder}"
targets = [
    { placeholder = "this", __machine__ = "user@172.29.1.2" },
    { placeholder = "that" },
]

A configuration file can have multiple tables

[table-1]
baseimg = "docker:image-name"
command = "command template with {placeholder}"
targets = [
    { placeholder = "this", __machine__ = "user@172.29.1.2" },
    { placeholder = "that" },
]

[table-2]
baseimg = "docker:other-image"
command = "other command {parameter} with curly braces {{escaped}}"
targets = [
    { parameter = 100, __machine__ = "user@172.29.1.2" },
    { parameter = 200 },
]

Optional field:

  • include (array of string) - Paths to additional configuration files

The instruction must be declared at top level (not inside tables).

include = ["path/to/other/config.toml", "/path/to/another/config.toml"]

[table-name]
baseimg = "docker:image-name"
command = "command template with {placeholder}"
targets = [
    { placeholder = "this", __machine__ = "user@172.29.1.2" },
    { placeholder = "that" },
]

This library is using Semantic Versioning.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker-launch-0.2.2.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

docker_launch-0.2.2-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file docker-launch-0.2.2.tar.gz.

File metadata

  • Download URL: docker-launch-0.2.2.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.8.13 Linux/5.15.0-1019-azure

File hashes

Hashes for docker-launch-0.2.2.tar.gz
Algorithm Hash digest
SHA256 4a85021059e1731fa40843675d8ebb159fe172a2e4248ea29123a0c6eec4224e
MD5 c7c70c35ce532ada605769ab0292b557
BLAKE2b-256 8eaf94094af31eb3af6454bb6e0456af883d0bc6830705d0bb61b28d0b252fe4

See more details on using hashes here.

File details

Details for the file docker_launch-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: docker_launch-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.8.13 Linux/5.15.0-1019-azure

File hashes

Hashes for docker_launch-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0b862841bfbadd94570d4669d820304335b712096d3ab73a89925daf1607c0be
MD5 6219a58cd83ca101dce5b1ceb6e343cf
BLAKE2b-256 46dfebeb00107aefb3a5fa7a39ba81ce00aa955f4a72a24d6652a471c7ae4a3c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page