当前位置: 首页 > 知识库问答 >
问题:

在docker容器中使用SSH键

姬锐
2023-03-14
#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 pull之类的git命令

共有1个答案

白学
2023-03-14

如果需要在构建时使用SSH则是一个更难的问题。例如,如果您使用Git Clone,或者在我的例子中使用PIPNPM从私有存储库下载。

我找到的解决方案是使用--build-arg标志添加密钥。然后,您可以使用新的实验性--squash命令(添加了1.13)合并层,以便删除后键不再可用。以下是我的解决方案:

生成命令

$ docker build -t example --build-arg ssh_prv_key="$(cat ~/.ssh/id_rsa)" --build-arg ssh_pub_key="$(cat ~/.ssh/id_rsa.pub)" --squash .
FROM python:3.6-slim

ARG ssh_prv_key
ARG ssh_pub_key

RUN apt-get update && \
    apt-get install -y \
        git \
        openssh-server \
        libmysqlclient-dev

# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
    chmod 0700 /root/.ssh && \
    ssh-keyscan github.com > /root/.ssh/known_hosts

# Add the keys and set permissions
RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa && \
    echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub && \
    chmod 600 /root/.ssh/id_rsa && \
    chmod 600 /root/.ssh/id_rsa.pub

# Avoid cache purge by adding requirements first
ADD ./requirements.txt /app/requirements.txt

WORKDIR /app/

RUN pip install -r requirements.txt

# Remove SSH keys
RUN rm -rf /root/.ssh/

# Add the rest of the files
ADD . .

CMD python manage.py runserver
 类似资料:
  • 问题内容: 我有一个应用程序可以使用Git执行各种有趣的操作(例如运行git clone和git push),而我正在尝试对其进行docker-ize。 我遇到了一个问题,尽管我需要能够向容器中添加SSH密钥以供容器“用户”使用。 我尝试将其复制到,进行更改,创建了一个git ssh包装器,但还是没有运气。 这是Dockerfile供参考: 运行git命令,如 问题答案: 原来使用Ubuntu时,

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

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

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

  • 主要内容:Docker 客户端,容器使用,运行一个 web 应用,查看 WEB 应用容器,网络端口的快捷方式,查看 WEB 应用程序日志,查看WEB应用程序容器的进程,检查 WEB 应用程序,停止 WEB 应用容器,重启WEB应用容器,移除WEB应用容器Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

  • 上一节中,我们学会了如何从Docker Hub官方仓库中获取镜像。同时,我们已经知道,Docker镜像是静态的,要使用它,就是以镜像为模板,创建并运行Docker容器应用。 本节我们将详细介绍Docker容器的使用,在了解容器的各项操作之前,我们先来回顾一下,Docker 容器的生命周期里分为五种状态,其分别代表着: Created:容器已经被创建,容器所需的相关资源已经准备就绪,但容器中的程序还