Linux常见问题
一、linux 网络错误
ping: www.baidu.com: 未知的名称或服务原因分析,linux ping不通
原因1、可能是网络配置文件设置错误
检查网络配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33
仔细检查红框中的信息
解释
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
重启网卡 service network restart
原因3、要是配置了DNS还没解决问题,那就可能是路由网关没有设置
netstat -rn 查看路由中网关设置情况
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
会出现下图信息:
然后使用此命令来杀掉进程(其中2323为之进程号):
kill 2323
注意:若使用kill -9,则会出现杀不死进程的情况!!!
然后,我们再次使用此命令:
netstat -tanlp
来查看其端口号信息占用情况,看其是否被杀掉
此次,我们就看不到3306端口号的占用情况了,其已经被释放了。
接下来,我们需要重启docker:
systemctl restart docker
到目前为止,已经完成一大半了,但还没有成功解决掉这个麻烦。
我们需要把我们刚才下载好的MySQL镜像删除掉。
我是这样卸载镜像的:
1、查看所有容器:
docker ps -a
2、删除此容器(docker rm CONTAINER ID):
docker rm eb6
3、查看镜像:
docker images
4、删除此镜像(docker rmi IMAGE ID):
docker rmi 43f
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命令,验证了网络的连接。