我想创建一个容器网络,其中一个中央容器应该可以装入所有其他容器。通过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中。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!