问题是
启动 Docker 容器之后,外网一直访问不到
排查过程
- 检查阿里云端口是否开放,登录阿里云后台配置安全组即可。
- 启动Docker服务
docker run -d -p 0.0.0.0:8080:8080 -v ~/trilium-data:/home/node/trilium-data zadam/trilium:[VERSION]
0.0.0.0:8080:8080 解释:前面是宿主地址及端口,后端8080端口为镜像中的地址
# 参数说明
--name=“Name” #容器名字 tomcat01 tomcat02 用来区分容器
-d #后台方式运行 (docker run -d 启动后容器立即结束问题)
-it #使用交互方式运行,进入容器查看内容
-p(小写) #指定容器的端口 -p 8080:8080
-p #ip:主机端口:容器端口
-p #主机端口:容器端口(常用)
-p #容器端口
-P(大写) #随机指定端口
通过-it方式进入
exit #直接停止容器,并且退出容器
ctrl + p + q #容器不停止退出
3. 检查服务开起来后是否能访问成功
curl http://127.0.0.1:8080
4. 检查 Docker 端口是否映射到宿主,端口号是否正确
docker port 镜像ID
通过访问应用地址发现,Docker 的服务已经启动了,访问镜像内的端口是可行的,但是访问映射的端口就是不行。上层的所有端口都是打开的。所以在重新检查Docker是否存在有没有什么端口没有转发。
查看是否开启转发了
1 表示已开启,0 表示未开启。如下图我的就是没开启
sysctl net.ipv4.ip_forward
修改配置开启转发
tee -a /etc/sysctl.conf <<-'EOF'
#配置转发
net.ipv4.ip_forward=1
EOF
重启服务
systemctl restart network // 重启网络
systemctl restart docker // 重启Docker
重启服务后,在重新访问,正常访问成功。