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

1,807 阅读2分钟

「这是我参与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中进行配置

<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操作了。