https://github.com/omni-us/docker-command-line-interface
Script intended to ease the execution from the command line of commands inside docker containers
https://github.com/omni-us/docker-command-line-interface
bash cli docker shell
Last synced: about 1 year ago
JSON representation
Script intended to ease the execution from the command line of commands inside docker containers
- Host: GitHub
- URL: https://github.com/omni-us/docker-command-line-interface
- Owner: omni-us
- License: mit
- Created: 2018-11-17T08:09:33.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-12T09:40:35.000Z (over 3 years ago)
- Last Synced: 2025-04-18T07:51:45.752Z (about 1 year ago)
- Topics: bash, cli, docker, shell
- Language: Shell
- Homepage:
- Size: 13.7 KB
- Stars: 11
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
Version: 2022.12.12
DESCRIPTION
===========
This is a simple script intended to ease the execution from the command line
of commands inside docker containers. It makes the execution behave mostly
like any other host command. The main characteristics are:
- Automatic access to user files in the host.
- Generated files owned by the current user.
- Support input from stdin and redirection of stderr and stdout.
- Support of complex command arguments, e.g. spaces, quotes, etc.
The basic system requirement is that docker must be installed and configured
to not require sudo.
A new container is created for each call to docker-cli and
when execution finishes the container is automatically removed. The command is
executed as the current user from the current working directory. Executed
commands will only work if it is executed from and referencing only files in
the host's /Users, /home, /mnt, /media or /tmp directories.
The interface can also be used to execute external scripts inside the
container. For this to work, the script must be located in a directory
accessible to the container (see above) and be in a directory in your $DPATH
environment variable or be referenced with its full or relative path.
INSTALLATION
============
By installation it is meant to make the docker-cli
command runnable from any location. If you cloned the github repository, it is
recommended that you create a symlink from the clone to any directory in your
path, i.e.
cd $HOME/.local/bin
ln -s path_to_repo/docker-cli
Copying the script to any directory in your path would also work.
**Bash completion:**
It is very useful to enable bash completion for example to ease typing of
image names and tags. This can be enabled by sourcing the script, though this
functionality depends on the docker bash completion, so this one needs to be
enabled first. To make it permanent you could add to your .bashrc the
following (adapting to your case):
source /usr/share/bash-completion/completions/docker
source $HOME/.local/bin/docker-cli
SYNOPSIS
========
docker-cli [OPTIONS] -- DOCKER_IMAGE COMMAND ARGUMENTS
docker-cli [OPTIONS] -- DOCKER_IMAGE bash # Prompt becomes USER_ID@CONTAINER_ID$
OPTIONS
=======
--add-uid Run add_uid_to_passwd at startup.
--tmp-home Create /tmp/HOME directory and set HOME=/tmp/HOME.
--user UID:GID (default: current user and current directory's group)
--gpus=GPUS (e.g. all)
--ipc=DOCKER_IPC (e.g. host)
--publish=LIST (e.g. 8080:8080)
--cli-debug Prints the docker run command right before execution.
--help Prints this help message and exits.
--version Prints the version of docker-cli and exits.
In general most of the options that docker run accepts should work. For more
details check docker run --help.
EXAMPLES
========
# Get the version of some command in the container
docker-cli -- ubuntu:16.04 sed --version
# Container command as part of a pipe
echo 'hello world!' | docker-cli -- ubuntu:16.04 grep hello | xargs echo
# Create files in container
echo 'hello world!' | docker-cli -- ubuntu:16.04 tee test.txt
ls -l test.txt
rm test.txt
# Use of nvidia GPU in container
docker-cli --runtime=nvidia -- nvidia/cuda:10.1-runtime-ubuntu16.04 nvidia-smi # old format
docker-cli --gpus=all -- nvidia/cuda:10.1-runtime-ubuntu16.04 nvidia-smi
# Run a jupyter notebook in container
docker-cli --publish=8888:8888 -- DOCKER_IMAGE bash
export HOME=$(pwd)
jupyter notebook --ip 0.0.0.0 --no-browser