sshdocker集装箱从外面

我有一个docker-compose.yml文件,包含两个节点。 我已经安装ssh通过命令RUN apt-get install -y ssh和暴露的端口22为ssh (在这里讨论)在两个:

 version: "2" services: nodex: build: context: . dockerfile: Dockerfile-X args: - MY_USER - MY_PASS environment: - MY_DNS=${MY_DNS} - MY_HOME=${MY_HOME} env_file: - .env - envs/nodex/nodex1.env ports: - "${NODE_X_TOMCAT_PORT}:${NODE_X_TOMCAT_PORT}" - "4040:22" networks: zizi_network: ipv4_address: ${NODE_X_IP} nodey: build: context: . dockerfile: Dockerfile-Y environment: - MY_DNS=${MY_DNS} - MY_HOME=${MY_HOME} env_file: - .env - envs/nodey/nodey1.env - envs/nodey/nodey2.env - envs/nodey/nodey3.env ports: - "${NODE_Y_JMX_PORT}:${NODE_Y_JMX_PORT}" - "${NODE_Y_WS_PORT}:${NODE_Y_WS_PORT}" - "5050:22" networks: zizi_network: ipv4_address: ${NODE_Y_IP} networks: zizi_network: driver: bridge ipam: driver: default config: - subnet: 175.80.70.0/24 

我的.env文件包含:

 NODE_Y_IP=175.80.70.10 NODE_Y_JMX_PORT=1998 NODE_Y_WS_PORT=9000 NODE_X_IP=175.80.70.11 NODE_X_TOMCAT_PORT=8153 

我也有另一个安装了ssh Dockerfile ; 但是由于某种原因我在docker-compose之外构build并运行它。 这是我的docker run这个文件的命令:

 docker run -it --net=host -p 6060:22 --env-file .env --env-file envs/nodez/nodez1.env -e DISPLAY -v ${HOME}/.Xauthority:/root/.Xauthority -v $(pwd)/log:/output/lastrun/ --name nodez_container nodez_image_name:nodez_image_tag 

请注意-e DISPLAY -v ${HOME}/.Xauthority:/root/.Xauthority被传递,只是因为我在容器中有x11应用程序。

由于我已经通过我自己的主机作为它的networking,我认为它可以观看我的本地主机可以观看的任何东西; 我不确定这是真的,这只是我的一个假设。

我想要的是:

  • nodez到节点nodexnodez ssh

在运行docker-compose.yml docker-compose buildnodez docker-compose run分别运行docker-compose.yml节点后,然后使用上面的nodez docker run命令docker run nodez ,我尝试在节点和我的localhost之间build立ssh连接,结果是:

  1. 我可以在nodez使用firefox打开安装在nodex web应用程序。
  2. 我只能从nodez ssh mylocaluser@localhostssh mylocaluser@127.0.0.1 nodez
  3. 我可以从三个节点ssh mylocaluser@my.local.ip.addr
  4. 我不能通过端口22从我的本地主机ssh节点nodexnodex与他们的IP地址,也不暴露端口40405050分别。
  5. 我不能通过彼此ssh节点与他们的IP地址从我的本地主机不通过端口22也没有暴露端口40405050
  6. 我可以连接到本地networking中所有节点上的IP地址为192.168.100.0的计算机。

编辑1:

我检查了nodex端口:

 docker port ssh_nodex_1 22/tcp -> 0.0.0.0:4040 8153/tcp -> 0.0.0.0:8153 

然后:

 ssh root@127.0.0.1 -p 4040 ssh_exchange_identification: read: Connection reset by peer 

和:

 curl -i 175.80.70.11:4040 curl: (7) Failed to connect to 175.80.70.11 port 4040: Connection refused curl -i 175.80.70.11:22 curl: (7) Failed to connect to 175.80.70.11 port 22: Connection refused