SSH into docker toolbox

This commit is contained in:
cytopia 2018-07-12 09:37:58 +02:00
parent cfc80f6ab2
commit 1c4aa9f1b0
No known key found for this signature in database
GPG Key ID: 6D56EDB8695128A2

View File

@ -1,11 +1,132 @@
:orphan:
.. include:: /_includes/all.rst
.. _howto_ssh_into_docker_toolbox:
***********************
SSH into Docker Toolbox
***********************
TODO
**Table of Contents**
https://stackoverflow.com/questions/30330442/how-to-ssh-into-docker-machine-virtualbox-instance#30331229
.. contents:: :local:
Requirements
============
You shell must have an SSH client (the ``ssh`` command).
Manual
======
Before going to use the automated approach, you should understand how to fetch all required
information via the ``docker-machine`` command.
Gather all information
----------------------
1. Get active Toolbox machine name
.. code-block:: bash
host> docker-machine active
default
2. Print all information
.. code-block:: bash
host> docker-machine -D ssh default
Host : localhost
Port : 51701
User : docker
Key : .docker\machine\machines\default\id_rsa
Gather specific information
---------------------------
1. Get active Toolbox machine name
.. code-block:: bash
host> docker-machine active
default
2. Get SSH username (Using machine name ``default`` from above)
.. code-block:: bash
host> docker-machine inspect default --format={{.Driver.SSHUser}}
docker
3. Get SSH public key (Using machine name ``default`` from above)
.. code-block:: bash
host> docker-machine inspect default --format={{.Driver.SSHKeyPath}}
.docker\machine\machines\default\id_rsa
4. Get local SSH port (Using machine name ``default`` from above)
.. code-block:: bash
host> docker-machine inspect default --format={{.Driver.SSHPort}}
51701
5. Get Docker Toolbox IP address (Using machine name ``default`` from above)
.. code-block:: bash
host> docker-machine ip default
192.168.99.100
SSH into Docker Toolbox
-----------------------
Now with the above gathered information you can ssh into Docker Toolbox in two different ways:
1. via local port-forwarded ssh port (automatically forwarded by Docker Toolbox)
.. code-block:: bash
host> ssh -i .docker\machine\machines\default\id_rsa -p 51701 docker@127.0.0.1
2. via Docker Toolbox IP address
.. code-block:: bash
host> ssh -i .docker\machine\machines\default\id_rsa docker@192.168.99.100
Automated
=========
Instead of typing all of the above manually each time, you can also create a small bash script
to automate this.
1. Create a file ``ssh-docker.sh`` and add the following to it:
.. code-block:: bash
:caption: ssh-docker.sh
#!/bin/bash
docker_machine_name=$(docker-machine active)
docker_ssh_user=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHUser}})
docker_ssh_key=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHKeyPath}})
docker_ssh_port=$(docker-machine inspect $docker_machine_name --format={{.Driver.SSHPort}})
ssh -i $docker_ssh_key -p $docker_ssh_port $docker_ssh_user@localhost
2. Run it:
.. code-block:: bash
host> bash ssh-docker.sh
.. seealso:: |ext_lnk_stackoverflow_ssh_into_docker_machine|