docker - 本地 Docker 容器之间的 SSH

标签 docker ssh

刚刚开始使用 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/

相关文章:

copy - 在Container “error when loading shared libraries” DOCKER中运行文件时出错

spring-boot - 使用 docker :dind service 在 GitLab CI/CD 中 Gradle bootBuildImage 失败并显示 'No digest found'

linux - 退出在 SSH 脚本的内部函数中不起作用

linux - 如何在登录一台机器后立即 ssh 进入另一台机器

SSH 的 Bash/Expect 脚本

unix - 如何将正在运行的进程移至后台 (UNIX)

docker-compose 使用包含实验功能的 Dockerfile 构建

c# - 如何在使用 Docker 时为 NuGet 配置代理?

php - 如何在 opcache 中启用优化(在官方的 php-fpm docker 镜像中)

python - 使用 Fabric 时连接到 ~/.ssh/config 中列出的主机