如何在Docker Compose中自动运行和删除容器

时间:2019-05-10 05:28:54

标签: docker ssh docker-compose

我正在寻找转发我的ssh-agent的发现 https://github.com/nardeas/ssh-agent

步骤如下

0。建立 导航到项目目录并启动以下命令来构建映像:

docker build -t docker-ssh-agent:latest -f Dockerfile .

1。运行一个长期存在的容器

docker run -d --name=ssh-agent docker-ssh-agent:latest

2。添加您的SSH密钥 运行一个临时容器,该容器具有从主机装入的包含SSH密钥的卷。 SSH密钥id_rsa将添加到ssh-agent中(您可以将ID_rsa替换为您的密钥名称):

docker run --rm --volumes-from=ssh-agent -v ~/.ssh:/.ssh -it docker-ssh-agent:latest ssh-add /root/.ssh/id_rsa

ssh-agent容器现在可以使用了。

3。将ssh-agent套接字添加到其他容器: 如果您使用的是docker-compose,这就是将套接字转发到容器的方式:

volumes_from:
  - ssh-agent
environment:
  - SSH_AUTH_SOCK=/.ssh-agent/socket

在撰写文件中,我将步骤1添加如下:

services:
  ssh_agent:
    image: nardeas/ssh-agent

但是我不知道步骤2的撰写文件中的等效语法是什么

docker run --rm --volumes-from=ssh-agent -v ~/.ssh:/.ssh -it docker-ssh-agent:latest ssh-add /root/.ssh/id_rsa

2 个答案:

答案 0 :(得分:0)

您可以按照以下步骤进行操作-

docker-compose -f my-docker-compose.yml run --rm ssh_agent bash -c "ssh-add /root/.ssh/id_rsa"

Ref-https://docs.docker.com/compose/reference/run/

答案 1 :(得分:0)

docker-compose.yml文件将为

services:
  ssh_agent:
  image: docker-ssh-agent:latest
  command: ssh-add /root/.ssh/id_rsa
  volumes_from:
    - ssh-agent
  environment:
    - SSH_AUTH_SOCK=/.ssh-agent/socket
  volumes:
    - ~/.ssh:/.ssh

然后按如下所示运行docker-compose命令

docker-compose -f docker-compose.yml run --rm ssh_agent