# syscontainer-tools

## Introduction

**syscontainer-tools** is a fully customized tool,
it is a small auxiliary tool which is expected to work with isulad with hook support,
and provides enhanced functions which is inappropriate to be included in isulad itself.

The project includes two main parts: `syscontainer-tools` and `hooks`.
`syscontainer-tools` is used for dynamically operating on running containers,
and `hooks` is used for executing user defined program at some special timepoint of container's lifecycle.

## Hooks

We provide syscontainer hooks function.

* syscontainer-hooks:
 1. insert block devices added by syscontainer-tools into container when container restarts(prestart state).
 2. insert network interfaces and route rules added by syscontainer-tools into container when container restarts(prestart state).
 3. remove udev rules and leaking network interfaces when container stops(post-stop state).
 4. handling oci relabel for container in prestart and post stop state.

You could use hook spec to customise your hooks.
For detailed information, See [introduction of syscontainer-hooks](hooks/syscontainer-hooks/README.md)

## syscontainer-tools

Basic usage of `syscontainer-tools`:

```
NAME:
   syscontainer-tools - Enhanced tools for IT isulad

USAGE:
   syscontainer-tools [global options] command [command options] [arguments...]

VERSION:
   v0.9
commit: e39c47b1d0403fd133c49db13ab6df7e5d53a21b

COMMANDS:
    add-device          add one or more host devices to container
    add-nic             create a new network interfaces for container
    add-path            add one or more host paths to container
    add-route           add a new network route rule into container
    relabel             relabel rootfs for running SELinux in system container
    remove-device       remove one or more devices from container
    remove-nic          remove a network interface from container
    remove-path         remove one or more paths from container
    remove-route        remove a network route rule from container

GLOBAL OPTIONS:
   --debug                              enable debug output for logging
   --log "/dev/null"                    set the log file path where internal debug information is written
   --log-format "text"                  set the format used by logs ('text' (default), or 'json')
   --syslog-service "unix:///dev/log"   set syslog service
   --help, -h                           show help
   --version, -v                        print the version
```

For usage of each command, you can check with `--help`, e.g. `syscontainer-tools add-device --help`

## Contributions

As this is a fully customized tool, I don't think anyone will be interested in contributing to this project,
but we welcome your contributions. Before contributing, please make sure you understand our needs and
make a communication with us.
