• docker的疑难杂症


    本篇博客主要是解决docker使用中遇到的常见报错,为了下次能够快速解决同样的问题,专门记录一下,文章会持续更新。

    容器名称被占用。

    Error response from daemon: Conflict. The container name "/mysql" is already in use by container "abed9581923d9d00777818256d0de8063067d38be353802ed83b3b2244955683". You have to remove (or rename) that container to be able to reuse that name.
    

    这个报错是你正在尝试创建一个名为mysql的容器,但已经存在相同容器的名称,解决办法是删除或者重命名已经存在的容器。下面以删除容器为例演示。

    1.使用下面的命令查看正在运行和停止的容器。

    docker ps -a
    

    image-20231027145316827

    2.使用下面的命令来强制删除容器。

    docker rm -f 容器id
    

    3.再次使用docker ps -a发现容器已经删除。

    4.可以再次执行创建容器命令。

    防火墙被打开或关闭

    Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-b1938128a963 -j RETURN: iptables: No chain/target/match by that name.  (exit status 1))
    

    这个报错是表明你对linux的防火墙进行打开或关闭操作,因为自己之前在虚拟机里部署应用,为了方便访问,直接关掉了防火墙,然后在linux中进行有关网络操作的命令时,就遇到了这个报错。

    解决办法是使用命令

    service docker restart
    

    重启docker.

    端口被占用

    docker启动mysql服务时,遇到了下面的报错:

    docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql5.6.46 (8c10cf68a1196a3a4b62faf37e36a4823bcfe2b353d9881a78c06314c1487fc6): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use.
    

    最后显示3306端口被占用着。

    解决办法:杀进程,步骤如下。

    1.使用命令下面的命令看看linux哪些端口被占用,找到3306端口。

    netstat -tanlp
    

    2.使用命令杀进程。

    kill 某个进程(这里3306端口是被1785占了)
    

    看下面这张图就比较好理解。

    image-20231027150501233

    这样再重新启动mysql服务的时候就不会报错了。

    参考博客:https://blog.csdn.net/qq_41157588/article/details/108889620

    容器的详情中不见网关和ip地址

    我遇到这个问题时,直接问gpt了,主要就是说这些信息存储在容器的网络命名空间中了。基本没什么影响,下面是gpt的回答。

    image-20231027151212380

    总的来说,遇到问题很正常,不要怕,遇到问题就解决问题,吸取经验,下次就不会浪费很长时间去解决了。还有就是要具备一定的英文能力,报错是英文的,读懂后甚至不用搜索引擎就能使用docker命令解决问题。

  • 相关阅读:
    C++ list模拟实现
    Vue:状态管理pinia
    C语言进阶第七课-----------自定义类型的讲解(结构体枚举联合)
    Python运算符
    Nginx 的安装与使用(入门教程)
    JVM-JVM中对象的结构
    世界杯小组赛频繁爆冷?这或许是强队的谋略 一分钟带你了解2022卡塔尔世界杯赛制
    还在寻找PDF压缩方法?这个方法值得一试
    MySQL 8.0 Clone 备份恢复演练
    Python3,9行代码,对比两个Excel数据差异,并把差异结果重新保存。
  • 原文地址:https://www.cnblogs.com/malinyan/p/17792447.html