Utility to re-run a docker container with slightly different arguments
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Chris Smith de31a64b5e Update README 4 years ago
.coveragerc Configure coverage 5 years ago
.gitignore Configure coverage 5 years ago
LICENCE.md Initial version 5 years ago
README.md Update README 4 years ago
docker_rerun.py Fix line length. 4 years ago
requirements.txt Switch coveralls library 4 years ago
setup.py Add a working entrypoint again. 5 years ago
test.py Fix incorrect label call 4 years ago

README.md

docker-rerun

Build Status Code Coverage PyPI PyPI Downloads

docker-rerun is a small utility script that makes it easy to re-run docker containers using the same arguments you used previously.

Want to update to a newer image, or add a missing port publication? docker-rerun’s got you covered.

Installation

You can install the current stable version of docker-rerun using pip:

$ pip install --upgrade docker-rerun

Or the bleeding edge version from git:

$ pip install --upgrade git+https://github.com/csmith/docker-rerun.git

Note that docker-rerun requires Python 3, so you may need to use pip3 in place of pip depending on your system configuration.

Usage

In the most basic usage, you pass in a container name and it will be stopped, deleted and recreated:

$ docker-rerun apache

You can also pass additional arguments to modify aspects of the container when it’s rerun. For example, to change the image:

$ docker-rerun --image nginx:latest webserver

To check what exactly is going to be performed beforehand, use the --dry-run option:

$ docker-rerun --dry-run apache
docker stop apache
docker rm apache
docker run --name=apache -p=80:80/tcp --restart=always apache:latest

Demo

asciicast

What’s supported

At present docker-rerun supports copying a number of commonly used arguments:

  • Commands (trailing arguments)
  • Environment variables (-e/--env)
  • Labels (-l/--label)
  • Links (--link)
  • Names (--name)
  • Networks (--network)
  • Port publications (-p)
  • Restart policies (--restart)
  • User switching (-u/--user)
  • Volumes (-v/--volume, and --volumes-from)

If a container uses an argument that’s not supported yet, it will be silently dropped when rerunning.

Arguments

The built-in help shows all available arguments. --dry-run and --pull affect the behaviour of docker-rerun; other options allow modification of the container’s parameters.

usage: docker-rerun [-h] [-d] [--pull] [--image IMAGE] [--label LABEL]
                    [--network NETWORK] [--port PORT] [--tag TAG]
                    container

Reruns docker containers with different parameters.

positional arguments:
  container             The container to rerun

optional arguments:
  -h, --help            show this help message and exit
  -d, --dry-run         Don't actually re-run the container, just print what
                        would happen.
  --pull                Docker pull the image before re-running the container
  --image IMAGE         Image to use in place of the original
  --label LABEL, -l LABEL
                        The new label to add to the container.
  --network NETWORK     The new network configuration to use
  --port PORT, -p PORT  Additional port to expose
  --tag TAG             Image tag (version) to use

What’s not done yet

Many other command line arguments:

  • Network aliases
  • Permissions and policies
  • Advanced networking options

More options to allow mutating the container config when rerunning.