調べてみると色々方法があるようだったが,下記のリンクの方法が一番よかった.Dockerでcloneする用に鍵を作ってそれを利用する方法.英語読むのダリィという方のため(といいつつ自分の作業用メモ)この記事書いておきます.
tarunlalwani.com
Dockerでcloneする用のsshの鍵を作る
大体の人はデフォルトのパスにすでにid_rsaがあると思うので上書きしないよう注意.
$ mkdir keys $ ssh-keygen -t rsa -b 4096 -C "xxxxxx@yyyyy.com" Enter file in which to save the key (/home/jonki/.ssh/id_rsa): /home/jonki/keys/id_rsa Enter passphrase (empty for no passphrase): 何も入力せずエンター Enter same passphrase again: 何も入力せずエンター Your identification has been saved in /home/jonki/keys/id_rsa. // known_hostsをid_rsa,id_rsa.pubがあるところに作っておく $ ssh-keyscan github.com >> keys/known_hosts
cloneするDockerfileを準備
Imageは何でも良いのだが,入れるImageによってはgitのインストールコマンドも記述する必要がある.また作成した鍵を含むkeysディレクトリをDockerfileと同じディレクトリに置いておく.うまく行けば,「Successfully tagged ...」みたいなログが出るはず.
$ cd <your work space> $ mv /home/jonki/keys . $ vim Dockerfile FROM python:3.6.3 # 作ったkeysディレクトリをコンテナ上にコピー RUN mkdir -p /root/.ssh COPY keys /root/.ssh # 入れるImageによってはgitをインストールするコマンドを入れる必要がある # RUN apt-get -y update && apt-get -y install --no-install-recommends git ssh みたいな # git clone WORKDIR /work RUN git clone git@github.com:username/your-private-repo.git CMD ["/bin/bash"]
実行して確かめる
$ docker build -t private-repo . $ docker run -it private-repo root@xxxxxxx:/work# ls private-repo