Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dvddarias/rdocker
Securely control a remote docker daemon CLI using ssh forwarding, no SSL setup needed.
https://github.com/dvddarias/rdocker
Last synced: about 2 months ago
JSON representation
Securely control a remote docker daemon CLI using ssh forwarding, no SSL setup needed.
- Host: GitHub
- URL: https://github.com/dvddarias/rdocker
- Owner: dvddarias
- License: mit
- Created: 2015-12-28T00:33:05.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2020-05-14T01:20:59.000Z (over 4 years ago)
- Last Synced: 2024-08-07T18:15:22.871Z (5 months ago)
- Language: Shell
- Homepage:
- Size: 23.4 KB
- Stars: 113
- Watchers: 4
- Forks: 17
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - dvddarias/rdocker - Securely control a remote docker daemon CLI using ssh forwarding, no SSL setup needed. (others)
README
# rDocker
Securely control a remote docker daemon CLI using ssh forwarding, no SSL setup needed.
## Install
If you want it available on your system run the following (you may need elevated privileges for this to work):
curl -L https://github.com/dvddarias/rdocker/raw/master/rdocker.sh > /usr/local/bin/rdocker
chmod +x /usr/local/bin/rdockerIf you just want it lying around on your file system:
git clone https://github.com/dvddarias/rdocker.git
cd rdocker## Usage
Lets assume you want to control the docker daemon on your `webserver.com` server from your local machine. You just run:
rdocker [email protected]
This will open a new bash session with a new DOCKER_HOST variable setup. Any `docker` command you execute will take place on the remote docker daemon.
To test the connection run:docker info
Check the `Name:` field it should have the remote hostname .... That's it!!!
You could for example:
- Run `docker build` to build an image on the remote host and then `docker save -o myimage.tar image_name` to store it locally.
- Run `docker exec -it container_name bash` to open a shell session on a remote container.
- Run `rdocker [email protected] docker logs container_name -f --tail 10` to follow the log output of a container.You can choose the local port the docker daemon will be forwarded to, by passing it as the last argument:
rdocker [email protected] 9000
You can also interact with the remote daemon from any other terminal by using the -H parameter of the docker client:
docker -H localhost:9000 images
To stop controlling the remote daemon and close the ssh forwarding, just exit the newly created bash session (press `Ctrl+D`).
## Dependencies & Configuration
**Basically None**. If you can login to your server over ssh and run docker commands this script should work out of the box.
Just remember:
- The user you log in with should have permissions access the `/var/run/docker.sock` otherwise you will get a lot of: `An error occurred trying to connect...`. To solve this [add the user to the docker group](https://docs.docker.com/engine/installation/ubuntulinux/#create-a-docker-group).
- It uses `ssh` to connect to the host so you should also have the the appropriate permissions (private-key, password, etc..).
- On the remote host it uses: python(2/3), bash, and ssh but these are already installed on most linux distributions.
- Needless to say you need `docker` installed on both computers ;).## How does it work
This is a general overview of how it works, feel free to check the script for further details:
1. Connects over ssh to the remote host, finds a free port on both computers, and opens ssh forwarding
2. Runs over the ssh connection a python script that forwards connections on the remote host from `localhost:remote_port` to the unix domain socket at `/var/run/docker.sock`
3. Starts a new bash session with DOCKER_HOST environment variable set to `tcp://localhost:local_port`
4. On session exit it SIGTERMs the ssh connection.Tested on Ubuntu, Mint and Debian. It should work on any linux based OS. I don't have a Mac around to test it :(.
Contributions are of course welcome.