我有4个容器,配置如下 (docker-compose.yml
):
version: '3'
networks:
my-ntwk:
ipam:
config:
- subnet: 172.20.0.0/24
services:
f-app:
image: f-app
tty: true
container_name: f-app
hostname: f-app.info.my
ports:
- "22:22"
networks:
my-ntwk:
ipv4_address: 172.20.0.5
extra_hosts:
- "f-db.info.my:172.20.0.6"
- "p-app.info.my:172.20.0.7"
- "p-db.info.my:172.20.0.8"
depends_on:
- f-db
- p-app
- p-db
f-db:
image: f-db
tty: true
container_name: f-db
hostname: f-db.info.my
networks:
my-ntwk:
ipv4_address: 172.20.0.6
p-app:
image: p-app
tty: true
container_name: p-app
hostname: p-app.info.my
networks:
my-ntwk:
ipv4_address: 172.20.0.7
p-db:
image: p-db
tty: true
container_name: prod-db
hostname: p-db.info.my
networks:
my-ntwk:
ipv4_address: 172.20.0.8
每个镜像都是由相同的 Dockerfile 构建的:
FROM openjdk:8
RUN apt-get update && \
apt-get install -y openssh-server
EXPOSE 22
RUN useradd -s /bin/bash -p $(openssl passwd -1 myuser) -d /home/nf2/ -m myuser
ENTRYPOINT service ssh start && bash
现在,我希望能够在运行以下命令时,从
f-app
连接到任何其他机器而无需输入密码:ssh myuser@f-db.info.my
。我知道需要在服务器之间交换ssh密钥(这不是问题),但我的问题是如何在使用Docker容器时进行交换,以及何时进行交换(构建时还是运行时)。
ssh-add /keys/ssh_test
,将此命令添加到docker-entrypoint中。如果您能为此生成拉取请求,那就太好了。git@github.com:Adiii717/docker-container-ssh.git - Adiii