sshdockerdocker-composedocker-machine

Inject host's SSH keys into Docker Machine with Docker Compose


I am using Docker on Mac OS X with Docker Machine (with the default boot2docker machine), and I use docker-compose to setup my development environment.

Let's say that one of the containers is called "stack". Now what I want to do is call:

docker-composer run stack ssh user@stackoverflow.com

My public key (which has been added to stackoverflow.com and which will be used to authenticate me) is located on the host machine. I want this key to be available to the Docker Machine container so that I will be able to authenticate myself against stackoverflow using that key from within the container. Preferably without physically copying my key to Docker Machine.

Is there any way to do this? Also, if my key is password protected, is there any way to unlock it once so after every injection I will not have to manually enter the password?


Solution

  • You can add this to your docker-compose.yml (assuming your user inside container is root):

    volumes:
        - ~/.ssh:/root/.ssh
    

    Also you can check for more advanced solution with ssh agent (I did not tried it myself)