刚刚开始使用 Docker。从同一图像在本地运行多个 docker 容器。
docker run -it -p 52022:22 ubuntu
docker run -it -p 52023:22 ubuntu
我添加了 openssh-server 和设置 key 。我如何在它们之间进行 ssh(用于实验目的)?尝试使用我从 docker 容器中获得的主机名进行 ssh 导致无法解析主机名
最佳答案
警告 ssh 进入根容器可能会授予根访问其主机的权限。
您可以创建一个 swarm 并使用生成的 dns 名称与它们交谈。
仅供引用这个例子,因为 ubuntu 没有运行任何东西,它停止容器并启动另一个。您将需要启动一个像 httpd 一样保持运行的容器
这是我的小狗示例。 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
关于docker - 本地 Docker 容器之间的 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47800486/