我想将一个docker容器暴露给外部世界,而不仅仅是主机。当我从基础的CentOS镜像创建图像时,它看起来像这样:
# install openssh server and ssh client
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
RUN echo 'root:password' | chpasswd
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
我这样运行这个镜像:
sudo docker run -d -P crystal/ssh
当我尝试使用sudo docker ps
查看容器时,我看到了Ports:
0.0.0.0:49154->22tcp
如果我在主机上(ubuntu)运行
ifconfig
,我会看到docker0 inet addr:172.17.42.1。我可以从我的主机ping通这个地址,但是从其他任何机器都无法ping通。我在设置容器连接外部世界方面做错了什么吗?谢谢。编辑: 我尝试检查容器的IPAddress,并且我看到IPAddress: 172.17.0.28,但我也不能ping通它...
如果我尝试使用nmap,则似乎返回端口。那是否意味着它已开放,如果我已经设置了ssh,我就能够ssh进入容器?谢谢。
nmap -p49154 10.211.55.1 显示该端口已开放,但服务未知。
我尝试通过ssh -l root -p49154 10.211.55.1进行ssh登录,但结果是...
Read from socket failed: Connection reset by peer.
nmap -p 49154 <eth0 ip>
,返回结果为:49155/tcp, open, service unknown
。 - Crystal