记一次问题解决:通过http启动docker容器报500错误

问题描述

在打开防火墙的情况下,通过http启动docker容器报500错误

解决过程
1.查看2375端口是否开放
firewall-cmd --query-port=2375/tcp

在这里插入图片描述

2.检查外部网络是否可以访问服务器

直接在浏览器输入http://192.xxx.xxx.xxx:2375/containers/json?all=true看是否有返回
结果是有返回,代表外部网络连接服务器没问题

3.查看ip转发
sysctl net.ipv4.ip_forward

在这里插入图片描述

看起来ip转发是正常的,但问题也就出现在这里,查看/etc/sysctl.conf文件,发现里面并没有ip转发相关配置

cat /etc/sysctl.conf

在这里插入图片描述

4.成功解决

在 /etc/sysctl.conf里,将net.ipv4.ip_forward=1添加进去就好

[root@xxx ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward=1

之后再重新加载配置文件和重启docker

systemctl daemon-reload
systemctl restart docker
5.测试
    @Test
    public void startDocker(){
        String url="http://192.xxx.xxx.xxx:2375";
        String envId="n8fd1c2e61cf7963e5b1c9c1af00b8134e5c71915059c4a465fb3bad827abb19f";
        restTemplate.postForObject(url + "/containers/" + envId + "/start", null, Object.class);
     
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值