当前位置:   article > 正文

使用docker时报Error response from daemon: driver failed programming external connectivity on endpoint_docker: error response from daemon: driver failed

docker: error response from daemon: driver failed programming external conne

前段时间在使用Docker进行开发部署中,遇到端口冲突的问题。当我们启动一个Docker容器时,有时会出现以下错误信息:

  1. docker: Error response from daemon: driver failed programming external connectivity on endpoint container-name (hash):
  2. Error starting userland proxy: Bind for 0.0.0.0:port failed: port is already allocated.

在这里我将介绍如何解决这个问题的。

问题分析

该错误信息提示了一个端口已经被占用的问题。在启动一个容器时,Docker会尝试将容器的端口映射到宿主机上,以便可以通过宿主机的 IP 地址和端口来访问容器中的应用程序。然而,如果宿主机上已经有另一个进程占用了相同的端口,Docker就无法绑定到该端口,从而导致错误的发生。

解决方法

步骤1: 查找占用端口的进程

首先需要找出哪个进程正在占用我们希望绑定的端口。可以使用以下命令来查找所需端口对应的进程ID:

sudo lsof -i :port

其中,port是你尝试启动 Docker 容器时报错的那个端口。

步骤2: 杀死占用进程

使用步骤1中找到的进程ID,可以使用以下命令来杀死占用端口的进程:

sudo kill -9 <PID>

请注意,<PID>是步骤1中找到的进程ID。

步骤3: 重新启动Docker容器

一旦杀死了占用端口的进程,就可以重新启动 Docker 容器了。执行启动容器的命令应该正常执行,不再遇到端口冲突的错误。

示例代码

下面是一个示例的Docker启动命令,以及检查和杀死占用端口进程的Shell命令:

  1. # 启动容器
  2. docker run -d -p host_port:container_port image_name
  3. # 检查占用端口的进程
  4. sudo lsof -i :port
  5. # 杀死占用进程
  6. sudo kill -9 <PID>

其中,host_port 是宿主机上的端口,container_port 是容器中的端口,image_name 是要启动的 Docker 镜像名称。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/604957
推荐阅读
相关标签
  

闽ICP备14008679号