本地Docker容器之间的SSH连接

3

我刚开始接触Docker。从同一个镜像在本地运行多个Docker容器。

docker run -it -p 52022:22 ubuntu
docker run -it -p 52023:22 ubuntu

我已经添加了 openssh-server 并设置了密钥。如何在它们之间进行 ssh 连接(用于实验目的)?尝试使用从 docker 容器获取的主机名进行 ssh 连接会导致无法解析主机名。

1个回答

2

警告:通过ssh进入根容器可能会潜在地授予其主机管理员权限。

您可以创建一个swarm,并使用生成的dns名称与它们通信。

顺便提一下,在这个例子中,由于ubuntu没有运行任何东西,它会停止该容器并启动另一个容器。 您需要启动像httpd这样的持续运行的容器。

这是我的doggy示例。 doggy/docker-compose.yml文件应该如下所示:

version: '3.0'
services:
  sparkey:
    image: "httpd"
    ports:
     - "52022:22"
     - "9002:80"
  limey:
    image: "httpd"
    ports:
     - "52023:22"
     - "9003:80"

如果尚未完成,则初始化一个swarm。

docker swarm init

然后在一个“狗狗文件夹”中。
docker stack deploy --compose-file docker-compose.yml doggy

然后当你进入容器时,从 docker ps 中获取容器名称。

docker exec -it doggy_limey_1.7jm5muapfhekb11v2ei8gvnc9 bash

如果Swarm中有多个主机,您可以找到机器。

docker service ps doggy

您可以使用生成的 DNS 名称或 Swarm 管理器的 IP 与其他人交流。
ping doggy_sparkey
PING doggy_sparkey (10.0.0.4): 56 data bytes
64 bytes from 10.0.0.4: seq=0 ttl=64 time=0.036 ms
64 bytes from 10.0.0.4: seq=1 ttl=64 time=0.070 ms

使用此命令停止堆栈。

docker stack rm doggy

1
如果您没有SSH守护程序服务器Docker镜像,请按照此教程https://docs.docker.com/engine/examples/running_ssh_service/中的命令运行。 - dskow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接