当前位置: 首页 > 面试题库 >

在Docker容器中使用SSH密钥

楮景明
2023-03-14
问题内容

我有一个应用程序可以使用Git执行各种有趣的操作(例如运行git clone和git push),而我正在尝试对其进行docker-ize。

我遇到了一个问题,尽管我需要能够向容器中添加SSH密钥以供容器“用户”使用。

我尝试将其复制到/root/.ssh/,进行更改$HOME,创建了一个git ssh包装器,但还是没有运气。

这是Dockerfile供参考:

#DOCKER-VERSION 0.3.4

from  ubuntu:12.04

RUN  apt-get update                                                             
RUN  apt-get install python-software-properties python g++ make git-core openssh-server -y
RUN  add-apt-repository ppa:chris-lea/node.js                                   
RUN  echo "deb http://archive.ubuntu.com/ubuntu precise universe" >> /etc/apt/sources.list
RUN  apt-get update                                                             
RUN  apt-get install nodejs -y

ADD . /src                                                                       
ADD ../../home/ubuntu/.ssh/id_rsa /root/.ssh/id_rsa                             
RUN   cd /src; npm install

EXPOSE  808:808

CMD   [ "node", "/src/app.js"]

app.js 运行git命令,如 git pull


问题答案:

原来使用Ubuntu时,ssh_config不正确。您需要添加

RUN  echo "    IdentityFile ~/.ssh/id_rsa" >> /etc/ssh/ssh_config

到您的Dockerfile,以使其能够识别您的ssh密钥。



 类似资料:
  • 运行诸如之类的git命令

  • 有没有办法在docker构建期间生成SSH密钥,并访问容器中运行的应用程序内的密钥文件路径?我的应用程序需要keyfile_path才能运行。如果不能在构建期间动态生成密钥并在应用程序中使用它,那么从本地主机注入SSH密钥以便在远程应用程序中使用它的替代方案是什么?

  • 问题内容: 我正在运行容器 hypriot / rpi-busybox-httpd 我正在尝试SSH到docker容器:但它给出了错误: 我马上就做吗? 问题答案: 可能是您的映像未安装二进制/ bin / bash(如之前所建议),我遇到了同样的问题,因此我可以使用/ bin / sh进入容器 另一个解决方法是直接执行命令,而无需访问任何shell。

  • 我将Drupal作为Docker容器运行在Vagrant box boot2docker(在Windows 8.1上)中: Vagrantfile(我的Docker容器) 主机/VagrantFile(主机) 我只需在Docker容器的目录中调用来运行它(和主机): 现在我喜欢从同一个目录连接到容器: 如果我将添加到Vagrantfile(我不知道是否需要它,因为我可以在没有它的情况下调用): 那

  • 我发现了很多问题和教程,最后才把这些都放在一起。想把它记录下来,这样别人就可以省下很多时间的沮丧。 我试图在BitBucket上获得一个私人git存储库,使用部署密钥与Spring Boot Config Server一起工作,并在Docker中运行。我遇到了很多问题。 如何使用应用程序进行实际配置。yml文件 我似乎不知道我应该把SSH信息放在哪里。所有教程似乎都是针对https的。 我一直收到

  • 我正在尝试从Dockerfile构建一个docker镜像,需要采取的步骤之一是安装一个依赖项,该依赖项只能通过私有Gitlab存储库获得。这意味着容器需要访问SSH密钥才能进行克隆。我知道这不是最安全的方法,但这只是一个中间容器,一旦运行应用程序所需的所有组件都到位,它将被移除。 问题是,无论我怎么尝试,我都无法让docker中的ssh代理建立连接。我得到: 如果我尝试简单地克隆存储库而不运行,也