我想创建一个容器网络,其中一个中央容器应该可以装入所有其他容器。通过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
转换为u2
到ssh user@u2
中。
关于docker - 从一个容器到另一个容器的SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53984274/