docker - 从一个容器到另一个容器的SSH

标签 docker ssh containers docker-networking docker-network

我想创建一个容器网络,其中一个中央容器应该可以装入所有其他容器。通过ssh,中央容器可以使用Ansible更改所有其他容器的配置。我知道,不建议将它从一个容器切换到另一个容器,我们可以使用卷进行数据共享,但这不适合我的用例。我可以从主机SSH到容器,但不能从一个容器SSH到另一个。

我正在使用的Docker文件是:

FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y netcat ssh iputils-ping
EXPOSE 22

Dockerfile创建的镜像名为ubuntu:v2

然后使用以下命令创建了两个容器u1和u2
docker run -p 22 --rm -ti --name u1 ubuntu:v2 bash 
docker run -p 22 --rm -ti --name u2 ubuntu:v2 bash

在容器中,我正在以下命令中运行以在容器中创建用户。在u1容器中创建用户u1,在u2容器中创建用户u2
root@d0b0e44f7517:/# mkdir /var/run/sshd
root@d0b0e44f7517:/# chmod 0755 /var/run/sshd
root@d0b0e44f7517:/# /usr/sbin/sshd    
root@d0b0e44f7517:/#
root@d0b0e44f7517:/# useradd --create-home --shell /bin/bash --groups sudo u2  
root@d0b0e44f7517:/# passwd u2
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@d0b0e44f7517:/#
root@d0b0e44f7517:/#

我制作了两个容器,除了一个容器具有用户u1,另一个容器具有用户u2之外,两个容器都是相同的,如上所述。此后,我尝试使用命令ssh -X u2 @ localhost -p 32773(32773是映射到容器的22端口的端口)从主机到容器ssh。所以ssh可以在主机到容器之间工作,但是我不能从一个容器到另一个容器ssh。那么您能帮我从一个容器到另一个容器ssh吗?

最佳答案

使用docker服务发现,然后可以从一个容器ssh到另一个容器。在这里,您可以通过将所有容器连接到同一网络来实现服务发现。

docker network create -d bridge test
docker run -p 22 --rm -ti --name u1 --network test ubuntu:v2 bash 
docker run -p 22 --rm -ti --name u2 --network test ubuntu:v2 bash

现在,您可以从u1转换为u2ssh user@u2中。

关于docker - 从一个容器到另一个容器的SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53984274/

相关文章:

java - Tomcat修改根目录的方法

php - 如何从PHP运行Docker?

php - 如何 Docker 化 PHP 应用程序

java - 如何设置 JVM 进程尝试分配的最大内存量?

hadoop - Hadoop 集群交互式用户的永久 Kerberos 票证

ssl - 如果我在服务器上没有 SSL 证书,使用 SSH (PuTTy) 是否安全?

docker - 如何使用kubernetes生成容器的多个实例?

Docker:bitbucket 管道 ext-zip *

git - Jenkins for Scala (SBT) Git master => Build => Test => Build Docker => Push into hub.docker

php - 使用SSH别名中的条目到PHP脚本中