docker 无法释放端口的解决方案
今天遇到一个非常奇葩的情况就是当更新完docker镜像后,运行docker-compose up -d 出现了Bind for 0.0.0.0:xxxx failed: port is already allocated 的情况,通过netstat -ap | grep xxxx 之后发现时docker的某个进程一直占用这个端口而导致服务无法重新启动。
通过一系列的解决方法:
比如kill进程,重启docker等方式都没有成功。之后分享一个方法希望可以给遇到同样问题的同学一种解决思路。
sudo cp /var/lib/docker/network/files/local-kv.db /var/lib/docker/network/files/local-kv.db_bk sudo rm /var/lib/docker/network/files/local-kv.db sudo docker-compose up -d
补充:docker端口被占用解决方法 “port is already allocated”
docker启动程序显示 “port is already allocated”,尝试了以下方法
1. 通过重启docker
2. 重启电脑
3. 查看所占用的端口对应的程序,kill
4. stop和rm所有的docker程序
都不起作用。
解决的方法
是找到对应的工作目录下的docker-compose.yml文件,修改所占用的端口为其他端口就解决了。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
docker 添加端口及获取dockerfile的方法
从docker image中获取 dockerfile docker history --format {{.CreatedBy}} --no-trunc=true $DockerImage |sed "s//bin/sh\ -c\ #(nop)\ //g"|sed "s//bin/sh\ -c/RUN/g" | tac 注:该docker file 不对目录,端口进行映射 同时不执行docker开机启动的脚本及 server 服务 docker 多端口映射 Doc
-
docker镜像访问本地elasticsearch端口操作
使用docker stack部署的镜像服务,进入镜像之后,理论上,应该可以通过下面的指令访问本地的elasticsearch服务 curl 本机ip/9200 但是却提示拒绝访问. 后来本机使用上述指令查看之后发现,本机也是拒绝访问. 之后发现,9200端口的elasticsearch服务,是通过打洞的方式连接的远程服务器上的elasticsearch服务,只能通过下面指令访问端口 curl 127.0.0.1:9200 如果想要通过本机ip访问9200端口,则需要在打洞指令的后面加上 -g.
-
docker端口映射及外部无法访问问题
docker容器内提供服务并监听8888端口,要使外部能够访问,需要做端口映射. docker run -it --rm -p 8888:8888 server:v1 此时出现问题,在虚机A上部署后,在A内能够访问8888端口服务,但是在B却不能访问. 这应该是由于请求被拦截. 一.查看firewall-cmd --state 如果输出的是"not running"则FirewallD没有在运行,且所有的防护策略都没有启动,那么可以排除防火墙阻断连接的情况了. 如果输出的是"
-
运行中的docker容器端口映射如何修改详解
前言 在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则.那么这种情况我们该怎么处理呢?今天Docker君教你如何修改运行中的docker容器的端口映射? 方法一:删除原有容器,重新建新容器 这个解决方案最为简单,把原来的容器删掉,重新建一个.当然这次不要忘记加上端口映射. 优缺点:优点是简单快捷,在测试环境使用较多.缺
-
docker 文件存放路径, 修改端口映射操作方式
如何获取容器的启动命令 容器早已创建好,如何得知它的启动参数(数据挂载到哪) #假设通过如下命令启动了一个容器 docker run -d --name mysql_cdh \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v mysql-data:/var/lib/mysql \ --restart=always \ mysql:5.5 --character-set-server=utf8 #如何通过容器名得知启动参数 [root@jenki
-
Docker 动态修改容器端口映射的方法
前言:Docker端口映射往往是Docker Run命令时通过-p将容器内部端口映射到宿主机的指定端口上,一般来说容器的端口所对应的端口是提前确定需要映射的.但是有些情况下不得不需要临时映射端口,例如Docker中运行着MySQL容器,默认端口是不开放的.那么有什么办法可以让运行中的容器暴露指定的端口呢?客官请往下看---> 方法一:更改Docker配置文件(有风险) 通过修改Docker的配置文件来达到我们的目的,一般来说需要修改以下的文件config.v2.json和hostconfig.j
-
Docker初级网络端口映射的配置
端口映射 Docker容器启动之前,如果不进行端口映射,在容器外部是无法通过网络来访问容器内的网络应用和服务.因为容器中常常会运行一些网络应用和服务,如果想在容器外部通过网络来访问容器内的网络应用和服务,就需要对该容器进行端口映射,可以通过docker run命令中的-P或-p选项来进行端口映射. 随机端口映射 当通过docker run命令中的-P选项来进行端口映射时,Docker会随机映射一个端口到容器开放的网络端口. 以nginx为例,先拉取nginx的镜像. [root@izoq008r
-
docker 无法释放端口的解决方案
今天遇到一个非常奇葩的情况就是当更新完docker镜像后,运行docker-compose up -d 出现了Bind for 0.0.0.0:xxxx failed: port is already allocated 的情况,通过netstat -ap | grep xxxx 之后发现时docker的某个进程一直占用这个端口而导致服务无法重新启动. 通过一系列的解决方法: 比如kill进程,重启docker等方式都没有成功.之后分享一个方法希望可以给遇到同样问题的同学一种解决思路. sudo
-
完美解决Windows10下无法对docker容器进行端口访问的操作
解决Windows10下无法对docker容器进行端口访问(端口映射的问题) 在Windows10系统服务器中安装了docker和docker-compose 并尝试在其中运行Nginx服务,映射也做好 问题:在主机的浏览器中,打开localhost:port无法访问对应的Web服务. 问题解析 原因:docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker. 也就是说,服务中使用的loca
-
Docker跨服务器通信Overlay解决方案(上)之 Consul单实例
目录 场景 任务 想法 分析 概念与选型 小试身手 环境说明 注意事项 动手做 测试 引文 场景 公司微服务快上线了,微服务都是用Docker容器进行部署的,在同一台主机下,把服务都部署上,注册到Nacos的IP与PORT都是内网的IP与Dockerfile中定义的端口号,看起来好像也没什么问题,通过网关去调用也是可以调通的,请注意这有一个大前提: 必须把所有服务容器部署在同一台主机上时才可以! 当服务实例没有部署在同一主机上,比如网关服务在A服务器,服务a在B服务器上,同样注册到Nacos (
-
Docker容器修改端口映射的实现
目录 可解决问题如下 解决方案 可解决问题如下 (1) 在不删除现有容器的情况下, 修改原有容器的端口映射; (2) 创建容器的时候指定了一个端口映射, 但是创建之后的容器存在多个端口映射; 具体描述 1 首先创建一个容器并指定端口映射; sudo docker run -it --name forge_restful -v /data01/wangxiaofei01/project/restful/wanmingTask/forge_restful_api -p 8076:8076 -d 01
-
IIS Tomcat共享80端口的解决方案
为什么有这种需求,原因是这样的,公司有一个Java的web项目,在另一台服务器A上,最近老板一时兴起,想把他合并到这台稳定点的服务器B上,服务器B上使用IIS来寄宿asp.net 网站,怎么办呢,硬着头皮上吧,在网上找各种解决方案: 解决方案一:isapi_redirect 这个方法按照方法试了N次就是没搞定, 解决方案二:IIS反向代理 基本逻辑就是请求来到IIS,IIS根据路由规则把请求转发给Tomcat处理,然后tomcat把响应返回给IIS, 这个方案依然只是IIS独占端口80,看起来的
-
Docker动态添加端口不需要重新建立镜像的方法
Docker容器在运行期间有时可能会需要修改或者添加暴露的端口,但是有时候运行的容器又不想再另外建立一个新的镜像.这时可以找到docker容器的存放地方,然后直接修改配置文件. 我们的容器都是保存在/var/lib/docker/containers下面. 我的容器是在/var/lib/docker/containers/797f3d0cb82aec7d1c355c7461b5bc5a050c1c0cbbe5d813ede0edad061e6632 每个容器ID对应一个hash_id,可以看到n
-
Docker暴露2375端口导致服务器被攻击问题及解决方法
相信了解过docker remote API的同学对2375端口都不陌生了,2375是docker远程操控的默认端口,通过这个端口可以直接对远程的docker daemon进行操作. 当$HOST主机以docker daemon -H=0.0.0.0:2375方式启动daemon时,可以在外部机器对$HOST的docker daemon进行直接操作: docker -H tcp://$HOST:2375 ps 好,说说如何"入侵",怎么通过这个端口入侵宿主机呢? 这个应该要从几个点说起
-
解决docker指定udp端口号的问题
docker启动容器时会指定访问端口,可以通过多个-p指定多个端口映射. udp在后台会有一个自己的端口号,区别于服务访问的端口号,这时就需要启动服务时候来指定一下了. 如: docker run -p 8080:8090 -p 10000:11000/udp aaa:latest 8080是服务本身暴露的端口号,8090是服务本身端口号.10000是udp暴露的端口号 11000为udp本身监听的端口,如果是udp要注意要声明. 补充知识:docker 容器中的项目监听udp 无法收到消息 在
-
详解Docker修改容器端口映射的方法
直接解决方法 具体可参考Stack Overflow链接 docker运行时存在守护程序,所以我们需要停止docker内运行的容器和docker服务.具体可参考官网给出的守护程序解释 docker stop 容器id //CentOS下停止docker服务(Ubuntu类似) sudo systemctl stop docker 使用以下命令找到已创建容器的hostconfig.json和config.v2.json配置文件. find / -name hostconfig.json //或co
随机推荐
- Sql server中内部函数fn_PhysLocFormatter存在解析错误详解
- jquery下利用jsonp跨域访问实现方法
- Java从网络读取图片并保存至本地实例
- python遍历序列enumerate函数浅析
- asp.net gridview强制换行
- php中json_encode中文编码问题分析
- 利用PyInstaller将python程序.py转为.exe的方法详解
- mysql delete limit 使用方法详解
- MySQL复制出错 Last_SQL_Errno:1146的解决方法
- 简单实现JavaScript图片切换效果
- 使用RSYNC在服务器间镜像或者备份目录和文件
- node.js中的console.warn方法使用说明
- EasyUI学习之DataGird分页显示数据
- Jquery创建一个层当鼠标移动到层上面不消失效果
- jQuery初级教程之网站品牌列表效果
- 基于JavaScript实现弹幕特效
- java实现爬取知乎用户基本信息
- 基于vue-ssr服务端渲染入门详解
- CheckBox多选取值及判断CheckBox选中是否为空的实例
- 详解如何在vue项目中引入elementUI组件