相关疑难解决方法(0)

在docker容器内使用SSH密钥

我有一个应用程序,使用Git执行各种有趣的东西(如运行git clone和git push),我正在尝试停靠它.

我遇到了一个问题,虽然我需要能够在容器中添加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"]
Run Code Online (Sandbox Code Playgroud)

app.js 像git一样运行git命令 git pull

ssh-keys docker

289
推荐指数
24
解决办法
23万
查看次数

使用docker-compose时如何读取外部机密

我不知道如何将外部机密传递给docker-compose产生的服务。我执行以下操作:

我创造新的秘密

printf "some secret value goes here" | docker secret create wallet_password -
Run Code Online (Sandbox Code Playgroud)

我的docker-compose.yml:

version: "3.4"
services:
  test:
    image: alpine
    command: 'cat /run/secrets/wallet_password'
    secrets: 
    - wallet_password

secrets:
  wallet_password:
    external: true
Run Code Online (Sandbox Code Playgroud)

然后我运行:

docker-compose -f services/debug/docker-compose.yml up -d --build
Run Code Online (Sandbox Code Playgroud)

docker-compose -f services/debug/docker-compose.yml up
Run Code Online (Sandbox Code Playgroud)

我得到以下回应:

WARNING: Service "test" uses secret "wallet_password" which is external. External secrets are not available to containers created by docker-compose.
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

6
推荐指数
2
解决办法
2189
查看次数

如何从Docker容器克隆Git存储库

我们有一个工具,需要克隆几个Git存储库以汇总文档数据。我们希望将该工具放在Docker容器中,以便在本地和Jenkins轻松运行它,并实现可重复性。

Git存储库托管在需要使用SSH密钥进行身份验证的专用服务器上。因此,Docker容器必须以某种方式获得对运行该容器的用户的SSH密钥的访问权限。

我们有一个约束列表:

  1. 我们希望将泊坞窗图像中嵌入的SSH密钥
  2. 我们希望用户构建Docker映像。我们认为Dockerfile不会启用可重现性,而已经生成的Docker映像可以
  3. 我们希望容器以root用户身份运行
  4. 我们使用运行容器的主机用户的SSH密钥
  5. 参数可被提供给该命令启动容器(-v-u,...)

问题:如果可能的话,我们如何实现?

有关:

git ssh-keys docker

6
推荐指数
2
解决办法
2348
查看次数

即使公钥已创建并保存在我的 github 配置文件中,远程 github 访问仍被拒绝

我在github上问了同样的问题,但没有回复。所以,我认为这里可能是提出此类编码问题的更好地方,因为这是我尝试做一些编码工作时遇到的问题。

我想在运行 macOS 10.14.x 的 MacBook Pro 上使用 docker 设置气流。

我有 zpencerq/docker-airflow:1.10.2 并按照https://docs.docker.com/compose/install/#install-compose上的说明进行操作

另外,我已经按照https://github.com/uber-common/docker-ssh-agent-forward中的说明设置了 ssh 代理转发

当我跑步时:

 docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

我有:

Collecting my-data-store from git+ssh://git@github.com/my-data-store.git@v.xx.xx.x#egg=my-data-store

Cloning ssh://git@github.com/my-data-store.git to /my/local/path

Permission denied (publickey).

fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

我已经创建了 ssh 公钥并将 ssh 公钥添加到我的 git 配置文件中。我还添加了我的私钥。

我已经尝试过针对此类问题的一些答案,但没有一个有效。

如果我在 Mac 终端中运行以下命令,效果很好。

git clone -q ssh://git@github.com/my_path/my-data-store.git /tmp/my_folder
Run Code Online (Sandbox Code Playgroud)

为什么 docker-compose 不能做同样的事情来访问 github ?

我错过了什么吗?

ssh github docker docker-compose airflow

5
推荐指数
2
解决办法
9093
查看次数

docker-compose 与远程主机不使用 ssh

我正在使用 DigitalOcean,特别是 1-click Docker droplet。

Docker 在 droplet 上运行,socket 文件位于 droplet 上的 /var/run/docker.sock 。

我的机器上也本地安装了 docker 和 docker-compose。

我有一个在我的机器上本地运行的 docker-compose.yml。

我在 droplet 上有公钥,在我的本地机器上将私钥添加到 ssh-add。我的 ssh 密钥有密码。

我可以从我的本地机器 ssh 进入我的 DigitalOcean droplet,没有任何问题或密码提示。

端口 22 在液滴上打开。

编辑:两台机器上的 docker-compose > 1.28

鉴于这些事实,根据我阅读的所有教程和文档,这应该有效:

docker-compose -H "ssh://root@<my-digital-ocean-droplet-ip-here>" up -d
Run Code Online (Sandbox Code Playgroud)

但它不起作用。我明白了:

ssh: connect to host <my-digital-ocean-droplet-ip-here> port 22: Connection timed out
ERROR: Couldn't connect to Docker daemon at http+docker://ssh - is it running?
Run Code Online (Sandbox Code Playgroud)

我想不通。我试过使用 docker 上下文,主机的环境变量,但没有任何效果。有什么我想念的吗?

编辑 - 还有一个细节。我没有看到任何迹象表明这很重要,但是我的公钥的末尾写着“azuread/”。同样,这不会干扰正常的 ssh。

编辑 - 这是 docker-compose.yml:

version: '3.9' …
Run Code Online (Sandbox Code Playgroud)

ssh docker digital-ocean docker-compose

5
推荐指数
1
解决办法
396
查看次数

如何通过Docker机密共享SSH密钥以访问私有Github存储库?

我使用的建议,从这个帖子来实现多克的秘密,这样我可以使用本地SSH密钥验证用户访问Github上我的容器。我在MacOS上,没有使用Docker swarm。这是我的设置:

docker-compose.yml

version: '3.1'

services:
  [servicename]:
    secrets:
     - ssh_private_key

[...]

secrets:
  ssh_private_key:
    file: ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

Docker文件

FROM python:3.7 as intermediate

RUN mkdir /root/.ssh/ 
RUN ln -s /run/secrets/ssh_private_key /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
COPY requirements_private_repos.txt ./

RUN pip install --no-cache-dir -r requirements_private_repos.txt
Run Code Online (Sandbox Code Playgroud)

当我尝试运行docker-compose build并使用SSH密钥从专用远程存储库中提取信息时,出现以下错误:

Permission denied (publickey).
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

我能够远程访问docker映像,并看到正在创建并填充秘密/run/secrets/ssh_private_key

在Dockerfile中使用链接时,为什么链接不起作用?如果Docker机密不是正确的方法,是否有更好的方法可以将SSH密钥从MacOS共享到Docker?

git macos ssh docker docker-compose

1
推荐指数
1
解决办法
522
查看次数

标签 统计

docker ×6

docker-compose ×4

ssh ×3

git ×2

ssh-keys ×2

airflow ×1

digital-ocean ×1

github ×1

macos ×1