今天把云服务器中的docker容器重启一遍后,发现里面的项目访问不到了,而且也无法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 命令关闭,
这是我想到的两个可能有问题的地方,最后还是不行。
然后我也在网上找了很多资料,什么开启路由,重启网络配置,重启云服务器,我也试了,都不行,最后吃个饭才意识到 niginx没有开启。。。
我的ubuntu开启nginx,命令?sudo /etc/init.d/nginx start
然后浏览器就能访问了,心累啊
总之就是非常不细心,把这都遗漏了。。。