add ssh keys in Docker

in my Dockefile i am adding ssh key to the docker and cloning a project from bitbucket.
i can pull another branch in the Docker file easily.

ARG key
ARG pub_key
RUN mkdir /root/.ssh/
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
ADD $key /root/.ssh/
ADD $pub_key /root/.ssh/
RUN git clone git@bitbucket.org:******************/sql.git
WORKDIR "/sql"
RUN git pull origin testBranch

the repo is cloned sucesfully and and a pull is made successfully from the testBranch
when i run this docker using docker run command and try any git command it says

  • Is there a way to store files on the docker host which will survive host restarts?
  • Issue connecting to rabbitmq from container
  • What special precautions must I make for docker apps running as pid 1?
  • Writing Elasticsearch logs from Docker to an external volume
  • Manipulating network traffic between containers in Docker in Docker environment without privileged mode?
  • Running svn update script on docker container start
  • Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    

    but the ssh key is present in the directory /root/.ssh

  • Docker blocking outgoing connections on high load?
  • Docker can't load config file, but container works fine
  • docker-compose image named: “prefix_%s_1” instead of “%s”
  • Cannot receieve response from activemq when using docker
  • What's a workable way setup an Akka cluster in a multi-node Docker environment?
  • Docker compose file memory, cpu limits
  • One Solution collect form web for “add ssh keys in Docker”

    Your key is added against root user (/root/.ssh/). I guess when you run docker run you are switching to another user (maybe, docker).

    If you add your id_rsa.pub to correct user (the user after running docker run command) then it should work.

    $ whoami show you the current user.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.