本文主要是介绍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
-
启用 IPv4 转发: 您需要在内核中启用 IPv4 转发。这可以通过编辑
/etc/sysctl.conf
文件来实现。使用文本编辑器打开该文件:sudo nano /etc/sysctl.conf
在文件末尾添加以下行:
net.ipv4.ip_forward=1
保存并关闭文件。
-
应用更改: 使用
sysctl -p
命令来应用更改:sudo sysctl -p
或者,如果您只是想临时应用更改,而不修改配置文件,您可以直接设置:
sudo sysctl net.ipv4.ip_forward=1
-
验证更改: 您可以使用
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、调整
改配置,并使其生效。特此记录
这篇关于docker映射了端口,宿主机不生效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!