diff --git a/docs/howto/docker-toolbox/ssh-into-docker-toolbox.rst b/docs/howto/docker-toolbox/ssh-into-docker-toolbox.rst index ea503a97..928f82df 100644 --- a/docs/howto/docker-toolbox/ssh-into-docker-toolbox.rst +++ b/docs/howto/docker-toolbox/ssh-into-docker-toolbox.rst @@ -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|