今天把云服务器中的docker容器重启一遍后,发现里面的项目访问不到了,而且也无法ssh访问。

改了一天,终于还是改好了。

一 .首先是无法ssh访问,

我无法ssh连接的原因是因为我容器的重启之后sshd没有了,然后重新下载了sshd然后重启就行了,进入容器后,

使用命令 

sudo service sshd status 

查看sshd状态,没有的话需要安装,

使用

sudo apt-get install sshd

或者

sudo apt-get install openssh-server

安装sshd服务,

然后

sudo service sshd start 

开启服务就行了。

最后可以通过 

sudo service sshd status 

命令再看看是否开启。

sshd服务开启后,重启mysql,sudo service mysql start,

运行java项目,命令  java -jar springcloud.jar

二.其次就是外部浏览器无法访问,

最麻烦的就是浏览器无法访问,因为我的云服务器只有一个docker,docker里面也只有一个项目,所以根本不需要映射特别的端口(除了ssh的22端口,但完全不影响目前这个问题),全部和云服务器的端口保持一致就行了,只要设置通过80端口访问云服务器就能访问,可就是访问不了。

1.首先我怀疑是容器网络配置的原因,就先导出容器然后生成了一个一样的容器,只是把网络配置分别改为了 ‘bridge’ ,'host'  ,但结果都一样,还是不行,还剩一个自定义网络模式我也不太会,而且应该没影响,毕竟我只是重启了容器才有这个问题,我以前也没自定义过网络配置,

网络模式的基本用法:要在启动容器时指定容器的网络模式,我是重新生成镜像再启动容器执行的这个, <network_mode> 是网络模式的名称,就是我上面说的三个,桥接,主机,和自定义,<image_name> 是要运行的Docker镜像的名称

docker run --network=<network_mode> <image_name>

总之也不行,随便提一下容器启动时的端口映射,表示把容器内的指定端口映射到主机上的指定端口

docker run -p <host_port>:<container_port> <image_name>

2.然后我又怀疑是防火墙的原因,我也懒得一个一个看端口进程情况,索性直接把云服务器和容器的防火墙全关了,反正只是一个简单的测试项目,结果还是不行,

乌邦图使用 sudo ufw disable 命令关闭防火墙,

没有ufw的话需要先安装 sudo apt- get install ufw

然后查看 防火墙状态 sudo ufw status 

centos 使用 sudo systemctl disable firewalld 命令关闭,

这是我想到的两个可能有问题的地方,最后还是不行。

3. 找到原因

然后我也在网上找了很多资料,什么开启路由,重启网络配置,重启云服务器,我也试了,都不行,最后吃个饭才意识到 niginx没有开启。。。

我的ubuntu开启nginx,命令 sudo /etc/init.d/nginx start

然后浏览器就能访问了,心累啊

总之就是非常不细心,把这都遗漏了。。。