Skip to main content

Using remote docker with SSH tunnel.

Project description

docker-tunnel is a console utility to use remote docker with SSH tunnel.

If you are using OS X or a Linux distribution with docker-unsupported kernel, no more running a virtual machine or ssh to a remote shell.

Installation

With pip:

$ pip install docker-tunnel

With pipsi (Recommended):

$ pipsi install docker-tunnel

Usage

$ docker-tunnel user@example.com
(user@example.com) $
(user@example.com) $ echo $DOCKER_HOST
127.0.0.1:4243
(user@example.com) $ docker ps  # go ahead
...
(user@example.com) $ ^D  # ctrl-d
$

More options:

$ docker-tunnel --help

Shell Theme Integration

Inside the tunnel injected shell, the environment variable DOCKER_HOST and DOCKER_PROMPT_INFO will be assigned. They can be used in your shell theme to prompt you which tunnel is using.

There is an example, my custom theme for OH-MY-ZSH.

Troubleshooting

Error response from daemon: client and server don't have same version (client : 1.14, server: 1.12)

The docker in source of CentOS 7 is using API 1.12 but the docker client in Homebrew of OS X is not. You can downgrade the docker client with Homebrew:

$ brew versions docker
...
1.0.0    git checkout c513c42 /usr/local/Library/Formula/docker.rb
...
$ cd /usr/local/Library/Formula  # now we install the old version of docker
$ git checkout c513c42 -- docker.rb
$ brew unlink docker
$ brew install docker
$ git checkout HEAD -- docker.rb
$ cd -
$ brew info docker  # check the installed versions and current version
...
/usr/local/Cellar/docker/1.1.1 (9 files, 9.8M) *
  Poured from bottle
/usr/local/Cellar/docker/1.2.0 (9 files, 6.6M)
  Poured from bottle
...
$ docker-tunnel user@example.com
(user@example.com) $ docker version
Client version: 1.0.0
Client API version: 1.12
...
(user@example.com) $ exit
$ brew switch 1.2.0  # restore to latest
bind: Address already in use. cannot listen to port: 4243

You can find out the process which held the 4243 port with sudo lsof -i :4243 and decide to kill it or pick another port with --local-port.

channel 1: open failed: connect failed: Connection refused. 2014/09/06 13:08:57 Get http://127.0.0.1:4243/v1.14/info: EOF

Does the docker server listen on 127.0.0.1:2375? You may have to set correct server info with --remote-host and --remote-port.

Known Bugs

  • The ssh tunnel can be authenticated with public key only. The password prompt will caused a crash.

Issues

If you want to report bugs or request features, please create issues on GitHub Issues.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker-tunnel-0.1.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

docker_tunnel-0.1.0-py2.py3-none-any.whl (6.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file docker-tunnel-0.1.0.tar.gz.

File metadata

File hashes

Hashes for docker-tunnel-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0bab3e1e6d64488b1b180e52194603fe0701f897dae8370966681188d9b0bc12
MD5 0adf6c73ab58e4ed4ccf965d528a7ffa
BLAKE2b-256 8ad16a2c6475554e23c31502e45f8a84de225a27987b25d9512342a3de029725

See more details on using hashes here.

File details

Details for the file docker_tunnel-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for docker_tunnel-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 bce21f9a5cbb3beecf65f4ecc3680aa97f1743ef8c52c9700e9462584f3b27f4
MD5 e9d9436fc7829b776973d1ff97549f01
BLAKE2b-256 e151473d5e8d8b44a673b5f2262a3e4785175e44e1d0793cb77660c5b55afb9c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page