3.0 KiB
Otherworld
Otherworld creates a persistent Docker container running your choice of GNU/Linux distribution, with a matching user account (no need to run everything as root) and with x11 and PulseAudio mappings. The container is created the first time you run otherworld and sticks around until you dispose of it manually.
Usage
Run command as user
otherworld <command> <arguments>
Run command as root
otherworld --sudo <command> <arguments>
Run command without printing anything else
otherworld --quiet <command> <arguments>
Remove the container
otherworld --rm
Arguments
These are arguments that go between otherworld
and the command.
Creation Options
--image=
Image to create the container with (default: image_$CONTAINER_NAME
, or debian:stable
if that image does not exist)
--build=
Path to build context to build the image from. This overrides --image
/OW_IMAGE
. The resulting image is named image_$CONTAINER_NAME
--volume=
A volume to mount in the container. ~
is expanded automatically. If the directory exists in the user's home directory it will be created to ensure it has the correct ownership and permissions.
--container=
Name to assign to container (default: otherworld_$USER
)
Command Options
--env==
Set the environment variable key
to value
in the command. Note that this does not set environment variables in the container itself.
--sudo
Runs command as root, instead of current user.
--cd/--cd=
Runs command in the specified directory, or current directory by default. If the container is being created, specified directory is added to list of volumes to mount. Otherwise, if the specified directory does not exist in the container, an error is raised.
Container manipulation commands
--rm
Removes the otherworld container.
--rmi
Removes image generated by the otherworld
script (image_$CONTAINER_NAME
)
--commit
Commits the container to an image named image_$CONTAINER_NAME
.
Environment variables
OW_IMAGE
Image to create the container with (default: debian:stable
)
OW_CONTAINER
Name to assign to container (default: otherworld_$USER
)
Config Files
Otherworld will look for config files named .otherworld
in the current directory and all ancestor directories. Config files are Python scripts that can access and redefine the following variables: command
, user
, uid
, command_user
, image_name
, container_name
, build_path
, command_workdir
, user_volumes
, pull
, command_env
. Config files are loaded in descending order (e.g. so ~/.otherworld
is loaded before ~/Projects/.otherworld
) and before command line arguments are processed. Additional variables available are cwd
(the current directory), config_file
(path to current configuration file) and config_file_dir
(parent directory of config file)
License
GNU GPL v3 or later