Linux常见问题

一、linux 网络错误

ping: www.baidu.com: 未知的名称或服务原因分析,linux ping不通

原因1、可能是网络配置文件设置错误

检查网络配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33

img

仔细检查红框中的信息

解释



ONBOOT=yes #设置开机启动网络,这样就不需要每次都连接网络了



BOOTPROTO=static #设置静态IP,这样ip地址不会随着物理机ip地址的改变而改变了



IPADDR=192.168.183.102 #ip地址,地址要和网关在同一网段,这里简单来说就是ip地址的前三段和网关的前三段要相同,即192.168.183



NETMASK=255.255.255.0 #子网掩码



GATEWAY=192.168.183.2 #设置网关,自己虚拟机的网关在虚拟机的编辑--->虚拟网络编辑器里免去看
重启网卡 service network restart

原因2、可能原因是DNS没配置好

修改vi /etc/resolv.conf

添加DNS

nameserver 114.114.114.114 (电信的DNS)

nameserver 8.8.8.8(googel的DNS)

可以随意添加一个,两个也可以,配置文件中可以配置三个DNS

然后在ifcfg-ens33配置文件中加上刚添加的DNS

img

重启网卡 service network restart

原因3、要是配置了DNS还没解决问题,那就可能是路由网关没有设置

netstat -rn 查看路由中网关设置情况

img

192.168.183.2就是我的路由网关

要是没有就添加网关

route add default gw 192.168.183.2(这里加上你自己的网关,上面有教程)

netstat -rn 检查是否添加成功

但是

这种方法只是临时添加网关,重启后就会失效

永久添加的方法:

将自己的路由网关添加到/etc/sysconfig/static-routes 文件中,没有这个文件就创建一个

route add default gw 192.168.129.2(自己的网关)

在文件中添加

any net default gw 192.168.129.2

保存,重启网卡验证

参考链接:Linux中ping不通外网_teddy6866的博客-CSDN博客_linux外网ping不通

二、linux 端口占用问题

docker: Error response from daemon: driver failed programming external connectivity on endpoint mysq

当我们看见这个错误提示时,不要紧张,easy,easy。问题不大,没有你想象中的那么麻烦。

我先说说我遇到的这种情况:

首先,我这个docker是刚下载的,什么镜像和容器都没有,所以不存在同名存在的情况。

其次,我会查看其MySQL端口号是否被占用。输入命令:

netstat -tanlp

会出现下图信息:

img

然后使用此命令来杀掉进程(其中2323为之进程号):

kill 2323



注意:若使用kill -9,则会出现杀不死进程的情况!!!

然后,我们再次使用此命令:

netstat -tanlp

来查看其端口号信息占用情况,看其是否被杀掉

此次,我们就看不到3306端口号的占用情况了,其已经被释放了。

接下来,我们需要重启docker

systemctl restart docker

到目前为止,已经完成一大半了,但还没有成功解决掉这个麻烦。

我们需要把我们刚才下载好的MySQL镜像删除掉。

我是这样卸载镜像的:

1、查看所有容器:

docker ps -a

img

2、删除此容器(docker rm CONTAINER ID):

docker rm eb6

img

3、查看镜像:

docker images

img

4、删除此镜像(docker rmi IMAGE ID):

docker rmi 43f

img 5、重新下载MySQL,然后重新启动即可成功。

三、切换docker网络host

1. 确定当前docker网络

首先,我们需要确认当前docker网络的名称和配置。

docker network ls
1.

这条命令会列出所有的docker网络,并显示网络的名称、ID和驱动程序等信息。

2. 创建新的docker网络

如果需要切换到一个新的docker网络,我们需要先创建它。

docker network create --driver=bridge <network-name>
1.

这条命令会创建一个新的bridge网络,并指定网络的名称。

3. 查看网络的配置

我们可以使用下面的命令查看网络的配置信息。

docker network inspect <network-name>
1.

这条命令会显示网络的详细信息,包括网络的ID、名称、子网和网关等配置。

4. 切换docker网络

现在,我们可以将容器连接到新的docker网络。

docker network connect <network-name> <container-name>
1.

这条命令会将指定的容器连接到新的docker网络。需要注意的是,容器必须是运行状态。

5. 验证网络连接

最后,我们需要验证容器是否成功连接到了新的docker网络。

docker exec <container-name> ping <host>
1.

这条命令会在容器内部执行ping命令,可以用来测试容器是否能够与指定的主机通信。

实现切换docker网络host的代码示例

下面是一个完整的示例,展示了如何实现切换docker网络host的步骤。

登录后复制

解释# 步骤1:确认当前docker网络
docker network ls

# 步骤2:创建新的docker网络
docker network create --driver=bridge my-network

# 步骤3:查看网络的配置
docker network inspect my-network

# 步骤4:切换docker网络
docker network connect my-network my-container

# 步骤5:验证网络连接
docker exec my-container ping google.com
1.2.3.4.5.6.7.8.9.10.11.12.13.14.

在上面的示例中,我们首先确认了当前的docker网络,然后创建了一个名为"my-network"的新网络。接下来,我们查看了网络的配置信息,并将一个名为"my-container"的容器连接到新的网络。最后,我们在容器内部执行了ping命令,验证了网络的连接。