Skip to main content

Docker Injector

Project description

Docker Namespace Injector

This Python script allows you to inject commands into specified Docker namespaces of a running or healthy Docker container. It is operated through various command-line options.

Overview

The Docker Namespace Injector script offers the following functionalities:

  • Identifying a target Docker container using labels.
  • Validation checks to ensure that the Docker container state is either 'healthy' or 'running'.
  • The ability to set SIGINT and SIGTERM signal handlers for graceful shutdown upon user request.
  • Command injections into specified Docker namespaces of the target Docker container.
  • Monitoring the running state of the Docker container and the injected process, and terminating the process when necessary.

Usage

You can control the script execution via the command line:

  • --label: Specify the label used to identify the target Docker container. This parameter can be defined in either the 'label' or 'label=value' or 'label:value' formats.
  • --require: Set the requirement for the Docker container’s state. This should be either 'healthy' or 'running'.
  • --ns: Specify the namespaces to inject. These should be divided by a comma (e.g., '--ns=net,uts').
  • --proc: Path to the proc filesystem. The default setting is '/proc'.
  • --cmd: Define the command to run in the Docker container’s namespace.

Most of the command-line parameters can be defined using environment variables:

  • INJECTOR_LABEL
  • INJECTOR_REQUIRE
  • INJECTOR_NS
  • INJECTOR_PROC
  • INJECTOR_CMD

Code Structure

The script comprises several functions, each one providing a specific operational feature:

  • target_valid(target: docker.models.containers.Container, require: str) -> bool: This function checks if the Docker container meets the specified requirement.
  • handle_stop(sig_num, frame): Handles the stop signal (SIGINT or SIGTERM) and triggers the required processes.
  • setup_signals(): Sets up signal handlers for SIGINT and SIGTERM signals.
  • shutdown_child(process: subprocess.Popen): Ensures a graceful shutdown of a child process that has been triggered by the script.

The inject(label, require, ns, proc, cmd) function initiates the main functionality of the script, using all the helper functions defined above.

Running the Code

Run the script using the following command:

```bash python3 script.py --label=label=value --require=healthy --ns=net --proc=/proc --cmd="command_to_run" ```

Make sure to replace the label=value parameter with the label of your target Docker container, net with the namespace to inject the commands, and command_to_run with the specific command you want to run in the selected namespace.

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_injector-0.1.9.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docker_injector-0.1.9-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file docker_injector-0.1.9.tar.gz.

File metadata

  • Download URL: docker_injector-0.1.9.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for docker_injector-0.1.9.tar.gz
Algorithm Hash digest
SHA256 39493992a80e4ad860e87ab8882ba067900e3de1602a414127bbe9bd3d1762b5
MD5 f7db803849816a7ccab76b41938db4bc
BLAKE2b-256 9a15b1c0fe9d1695e490b0ccab26b419b3c01994707aedcc20311246d633c3cd

See more details on using hashes here.

File details

Details for the file docker_injector-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for docker_injector-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 de6253b28a50f5d9612518a368f4db6b9e99cb24bcab8649b6f83f045e07b0e7
MD5 66047eaf63ceba753819ecca6c3df088
BLAKE2b-256 7e10ff8540705ee89b4dd4949aa4c4f52538ddd596a30b51bf9a1295e460a6d6

See more details on using hashes here.

Supported by

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