docker映射了端口,宿主机不生效

1、问题产生原因

docker run -d --name my-redis -p 6379:6379 -v /usr/redis.conf:/usr/local/etc/redis/redis.conf team-redis:3.2 redis-server /usr/local/etc/redis/redis.conf

这容器跑起来了,端口6379没用。搞的我一直怀疑哪里出错了,查看配置文件啊,命令啊。

2、发现问题源

docker run 命令后,发现控制台有一个警告输出。猜测就是这个吧

WARNING: IPv4 forwarding is disabled. Networking will not work.

随即问了AI

  1. 启用 IPv4 转发: 您需要在内核中启用 IPv4 转发。这可以通过编辑 /etc/sysctl.conf 文件来实现。使用文本编辑器打开该文件:

    sudo nano /etc/sysctl.conf

    在文件末尾添加以下行:

    net.ipv4.ip_forward=1

    保存并关闭文件。

  2. 应用更改: 使用 sysctl -p 命令来应用更改:

    sudo sysctl -p

    或者,如果您只是想临时应用更改,而不修改配置文件,您可以直接设置:

    sudo sysctl net.ipv4.ip_forward=1
  3. 验证更改: 您可以使用 sysctl 命令来验证更改是否已经应用:

    sysctl net.ipv4.ip_forward

    输出应显示 net.ipv4.ip_forward = 1

注意事项:

  • 如果您是在企业级 Linux 发行版(如 RHEL/CentOS)上遇到此问题,您可能需要确保 SELinux 或其他安全策略不会阻止 IPv4 转发。您可以通过禁用 SELinux 或调整 SELinux 策略来解决此问题。例如:

    sudo setenforce 0

    或者调整 SELinux 策略:

    sudo semanage boolean -m -a -n docker_connect -t user_home_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t
    sudo semanage boolean -m -a -n ip_forward -t public_content_t

3、调整

改配置,并使其生效。特此记录

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值