docker开放的端口_docker-5-解决宿主机没有开放81端口却可以直接访问docker启动的81端口nginx容器的问题...

我以为经过前面四篇博文的学习,自己对docker的了解最起码入门了,但是当我用docker启动一个81端口的nginx后(宿主机:容器/81:80),在宿主机的firwall防火墙没有添加81端口的情况下,竟然可以直接访问成功,然后试下docker运行mysql容器用3308端口,发现也是在firwall没有添加端口的情况下,仿佛绕过了防火墙可以直接访问到容器,当时就懵逼了…

环境CentOS7

firewall

docker

nginx

解决流程

1、以为是docker和firewall的启动顺序问题导致的

开始我以为是因为我先启动docker后面重启了firewall导致firewall不能够监控docker,然后我还美滋滋的觉得终于找到问题了。最后发现,太天真了,启动顺序完全没影响。

2、宿主机的防火墙和docker容器的防火墙冲突

后面我想到docker也是一个轻量级的linux操作系统,也有自己的防火墙,会不会是因为docker启动自己的防火墙后,权限级别直接绕过了宿主机的防火墙,因此百度了很多,后面按照网上的说法启动容器的时候加上—iptables=false,这样可能就关闭掉了容器的iptables防火墙,然而经过尝试并没有什么用,而且好像第二次启动容器直接就启动不了了,报什么iptables错误

3、直接修改配置文件不使用docker的iptables防火墙

因为我现在的操作系统是CentOS7,所以宿主机用的是firewall,而docker用的是iptables,百度查找说需要在文件/etc/default/docker中添加如下内容

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"

然后我美滋滋的跟着执行,发现这个文件根本不存在,因此我又直接新建这个文件,保存,接着执行如下两条命令重新加载文件和重启docker

#重载

systemctl daemon-reload

#重启docker服务

service docker restart

启动容器,重新访问,喵的,还是可以直接访问,仿佛这个配置文件完全没有用

然后直接百度,发现需要在文件/usr/lib/systemd/system/docker.service中添加如下配置,一下是我的文件

[Unit]

Description=DockerApplicationContainerEngine

Documentation=https://docs.docker.com

BindsTo=containerd.service

After=network-online.target firewalld.service containerd.service

Wants=network-online.target

Requires=docker.socket

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd-H fd:// --containerd=/run/containerd/containerd.sock $DOCKER_OPTS

ExecReload=/bin/kill-s HUP $MAINPID

TimeoutSec=0

RestartSec=2

Restart=always

EnvironmentFile=-/etc/default/docker

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.

# Both the old, and new location are accepted by systemd 229 and up, so using the old location

# to make them work for either version of systemd.

StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.

# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make

# this option work for either version of systemd.

StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Comment TasksMax if your systemd version does not supports it.

# Only systemd 226 and above support this option.

TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

[Install]

WantedBy=multi-user.target

a、添加配置文件,(-代表ignore error)EnvironmentFile=-/etc/default/docker

b、在ExecStart后面添加如下内容$DOCKER_OPTS

虽然搞不懂为什么,反正接下来修改完/etc/default/docker

后重载重启

#重载

systemctl daemon-reload

#重启docker服务

service docker restart

重新启动nginx容器,我的天,终于不能访问了。

执行如下命令开启81端口

firewall-cmd--zone=public--add-port=81/tcp--permanent

firewall-cmd--reload

我的天,终于可以访问了,测一下docker启动mysql的访问,也被firewall拦截了。

真是要命的东西

结语

虽然最终解决了,但是具体原理并不是太过明了,但是最起码docker启动的容器再也不会绕过firewall的限制,服了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试计划与测试方案

测试计划与测试方案主要有以下几点区别: 1.测试计划是一个偏管理性质的文档,而测试方案是一个偏技术类型的文档; 2.测试计划通俗来讲就是解决【谁来做?】【做什么?】的问题,而测试方案是解决【怎么做&#…

docker 删除包含关键字的镜像_30分钟带你轻松掌握Docker原理

前言Docker是什么?Docker是Go语言开发实现的容器。2013年发布至今,备受推崇。相关文档、学习资料十分详尽。近期有docker相关项目,得重新学习一下。博客以笔记为什么要使用 Docker?Docker 容器的启动在秒级Docker 对系统资源利用率…

ssm访问不到html_IDEA解决SSM项目的静态资源路径问题:HTML,CSS,JS--详解

直接上图(项目目录结构):我们主要关注webapp。如上图,建议把js,css,layui,首页等文件放在WEB-INF外部,WEB-INF放程序的主要网页,index页面,welcome,各种管理页面等(如下图…

pads中如何设置等长_如何在SQL Server中设置扩展,监控系统性能

dbForge Studio for SQL Server为有效的探索、分析SQL Server数据库中的大型数据集提供全面的解决方案,并设计各种报表以帮助作出合理的决策。dbForge Studio for SQL Server​www.evget.com扩展事件是一种有用且方便的解决方案,旨在监视您的系统性能。它…

string循环输入,Ctrl+z截止

注意1&#xff1a;while和循环的位置问题&#xff1a;若while在for循环里&#xff0c;则for循环一次&#xff0c;就会使while中的语块一直执行&#xff0c;CtrlZ结束后&#xff0c;只会给s[0]赋值。 注意2&#xff1a;i的值即为string数组的实际值 #include<iostream> …

testmeshpro合批_TextMesh Pro Emoji Align With Text(表情和文字对齐)

前言MMO游戏中需要富文件组件&#xff0c;大体功能包括图文混排&#xff0c;表情&#xff0c;超链接&#xff0c;文字动画等富文本功能&#xff0c;且DC数占用少。本文选择Unity免费提供的TextMesh Pro 解决方案。软件环境Unity3D 5.3.7p4TextMesh Pro 1.0.555.0b11(Jul 06.201…

iar stm32_STM32延时函数的四种方法

关注、星标公众号&#xff0c;不错过精彩内容单片机编程过程中经常用到延时函数&#xff0c;最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms()。本文基于STM32F207介绍4种不同方式实现的延时函数。普通延时这种延时方式应该是大家在51单片机时候&#xff0c;接触最早的延…

使用pm2启动node文件_PM2 是什么

目录 pm2是什么特点示例说明配置文件常用命令背景 由于需要在容器云新增一个测试环境&#xff0c;改了代码相关的配置后&#xff0c;进行部署。发现服务一直启动不了。在和运维一起排查问题&#xff0c;他看到pm2的一些信息&#xff0c; 问我pm2是不是阻塞了&#xff0c;并不是…

CP/M世界上第一个微机操作系统

CP/M世界上第一个微机操作系统 微软宣布2014年4月8日将不再对Windows XP系统进行更新&#xff0c;宣告这个存活了13年的史上寿命最长的微机操作系统基本上寿终正寝。很多人都知道这是个脱胎于DOS的系统&#xff0c;也潜意识中认为DOS是微机操作系统的鼻祖。不过&#xff0c;这大…

安卓 usb音量调节_戴尔推出面向Teams和Zoom视频通话的USB-C免提适配器

COVID-19 大流行期间&#xff0c;许多企业将会议安排在了线上举办。为方便通过 Microsoft Teams 和 Zoom 之类云视讯平台进行沟通的笔记本电脑用户&#xff0c;戴尔特地推出了新款 USB-C 音频适配器。作为一款两用配件&#xff0c;MH3021P 不仅可以作为有线通话的免提适配器(集…

python试卷河南理工大学万方科技学院_河南理工大学万方科技学院

河南理工大学具有百年办学历史&#xff0c;是一所拥有博士学位授予权的省重点建设的骨干高校。其前身焦作路矿学堂是我国历史上第一所路矿高等学府&#xff0c;是河南省建立最早的高等学校&#xff0c;是我国路矿、工矿高端人才的摇篮&#xff0c;也是中国矿业大学的前身。在学…

word表格美化技巧:如何统一改变表格的样式

在Word中插入的表格默认都是黑边白底&#xff0c;看上去非常的单调。比如这样&#xff1a; 很多小伙伴都是在新建表格并且填完数据之后&#xff0c;应用表格样式&#xff0c;来提升档次&#xff0c;如下&#xff1a; 但是&#xff0c;每次新建表格后再选择应用【表格样式】&…

banner信息是什么_我的设计成长笔记—第10篇(banner)

Banner2019年5月9日这里是我的设计成长笔记—————————————————Banner为什么单独拿出来聊因为我有差不多一年的时间都在做这个在我的成长过程中&#xff0c;banner是过渡从平面/美工到UI设计的一个过程。在这个过程中&#xff0c;我对设计的理解分成了三个部分第…

后台原理_电气控制原理动图22张,超赞!

今天从低压电器、电动机及控制线路、传感器及控制原理三部分来分享22张超赞的原理动图。低压电器部分1按钮开关2闸刀开关3行程开关4交流接触器5热继电器6时间继电器7速度继电器电动机及控制线路1异步电动机2直流电动机3步进电动机4永磁电机5正反转控制6自动往返控制7顺序控制8多…

[word技巧]把标题、图表题注编号由“一.1”改为“1.1“

一、问题描述 写作中文报告时&#xff0c;有时会要求一级标题用类似”第一章”的中文编号&#xff0c;二级标题用1.1这类编号&#xff0c;图表题注用“表1.1”的编号。此时&#xff0c;由于一级标题用的是中文数字&#xff08;如“一”&#xff09;作为序号&#xff0c;因此wor…

excel中怎样用公式获取表单控件_挑战高手:用不到 100 行代码,在前端实现 Excel 全部功能...

(点击图片获取专属你的开发工具)SpreadJS是一款基于 HTML5 的纯前端表格控件&#xff0c;兼容 450 种以上的 Excel 公式&#xff0c;具备“高性能、跨平台、与 Excel 高度兼容”的产品特性广受世界各地名企追捧。接下来让我们看看其具有哪些独特优势吧&#xff01;四大优势&…

python3 虚拟环境 pip 版本_【python知识】 - Python3之PIPENV虚拟环境及封装

Python的封装是通过pyinstaller直接打包python环境下的所有第三方模块&#xff0c;不管是不是封装程序涉及到的模块通通都一股脑打包进来&#xff0c;造成封装后大小超出预计很多。Pipenv 是一款管理虚拟环境的命令行软件&#xff0c;简单来讲&#xff0c;它可以创建一个只在某…

vissim免修改时间工具_App闪退怎么办?免越狱如何安装未签名的App?

由于最近苹果大规模的封签名&#xff0c;导致在第三方渠道下载的软件都出现闪退没法使用的现象。目前的替代方法就是使用电脑端 Cydia Impactor 来给 App 进行自签&#xff0c;虽然相对比较麻烦&#xff0c;但这也是目前针对企业签名无法使用的唯一解决方法。下面以安装 FilzaE…

stm32g4 下载算法_难道STM32G4芯片的主频才到80MHz?

最近有个STM32用户反映&#xff0c;他们目前在调试STM32G431CBU6这款芯片。使用ST官方的Cube库进行编程&#xff0c;发现时钟没法配置到技术手册上告知的170MHz。当然这个170MHz的频率要经过PLL倍频产生。不管选用内部时钟源还是外部晶振&#xff0c;只要配置成170MHz,芯片肯定…