linux中centos7防火墙开启/关闭异常错误解决方案

「这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战」。

根本报错信息:Failed to start firewalld.service: Unit is masked.(防火墙启动不了)

centos7介绍

使用背景:

1,CentOS7 默认的防火墙 不是iptables, 而是firewalle.

2,端口号使用需要单独放开来提供服务,如:8080,80等常用端口

系统、环境

问题起因:在idea集成docker,连接虚拟机路径测试时,出现以下连接异常提示信息。

image.png

解决过程:

发现问题一:查看防火墙状态: systemctl status firewalld,发现防火墙没有开启。

image.png
解决方案一:一般情况,开启防火墙后,问题就解决了,然而当开启防火墙时,发现防火墙也开启不了,开启防火墙命令:systemctl start firewalld

image.png

问题二:防火墙开启失败

解决方案二:systemctl unmask firewalld

问题可能是上次异常关闭,导致有残留的文件妨碍了防火墙的开启,需要清除原来的firewalld残留文件,然后就可以用systemctl start firewalld来启动防火墙了。
image.png

问题三:(可能没有设置端口号,一般为:2375)

解决方案三:

需要在dicker。service下设置docker的端口号,然后再开放端口号,最后需要重启防火墙就可以正常使用了。

设置端口号(vim /lib/systemd/system/docker.service)

重启防火墙(firewall-cmd –reload)

效果:image.png

附加:接下来记录一下idea如何集成docke,一键打包部署微服务

所谓idea集成docker,首先就是先开启docker远程访问。

1、如何开启docker远程访问?

1、
修改该Docker服务文件

1)进入:docker.service —命令:vi /lib/systemd/system/docker.service
2) 修改:ExecStart这行 ,开启远程访问路径权限—
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

默认是:(ExecStart=/usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock)

2、
重新开启,确认。

#重新加载配置文件

systemctl daemon-reload

#重启服务

systemctl restart docker.service

#查看端口是否开启

netstat -nlpt #如果找不到netstat命令,可进行安装:yum install net-tools

#直接curl看是否生效

curl http://127.0.0.1:2375/info

2、IDEA安装Docker插件

打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,点击install安装,安装后重启Idea。

3、IDEA配置Docker

从File->Settings->Build,Execution,Deployment->Docker打开配置界面,即上文出现问题的情况,解决后的效果。

配置docker,连接到远程docker服务。

image.png

4、docker-maven-plugin

docker-maven-plugin 插件就是为了帮助我们在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中。在pom.xml中进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
xml复制代码<properties>
<docker.image.prefix>name</docker.image.prefix>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.0.0</version>
</plugin>

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>

<configuration>
<!-- 镜像名称 name/exam-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 基础镜像jdk 1.8-->
<baseImage>java</baseImage>
<!-- 制作者提供本人信息 -->
<maintainer>name@aliyun.com</maintainer>
<!--切换到/ROOT目录 -->
<workdir>/ROOT</workdir>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>

<!-- 指定 Dockerfile 路径
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
-->

<!--指定远程 docker api地址-->
<dockerHost>http://0.0.0.0:2375</dockerHost>

<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>

</plugin>


</plugins>
</build>

完成以上操作,就可以之间用maven打包,启动镜像,开启容器。进行docker操作了。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%