docker容器启动问题报端口占用

docker启动mysql容器报错.
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql-master (cf828617afa45b50af0352599a07c0f816d57708b62d6602317ffe4231d04f2f): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

想问一下为什么我关闭了所有未启动的容器和运行容器,重启之后再运行还是会报端口占用? 但是我查了端口明明没有占用啊,然后每次我run一遍, 虽然报错了,但是docker ps -a中就会多出一个历史容器(不是正运行的), 这又是为什么, 不是端口被占用了吗? 这也会run成功?

求解答! 感谢!

img

你不要慌,你现在看我下面的讲解就明白了
你首先要知道 docker ps 和 docker ps -a的区别,不要看百度那些瞎几X抄来超区的, docker ps -a 包括活着的也包括异常失败的,所以你启动失败的docker 在这里也会有显示,你可以认为 docker ps -a是查看所以历史docker状态,包括正在运行的, docker ps 只是查看当前正在运行的


所以你现在问题中的描述是没问题的,你docker没有启动起来, docker ps 是查看不到当前运行的docker的,之后用docker ps -a可以看到失败的

下面给你几个常用的清理命令

# 杀死所有正在运行的容器:
docker kill $(docker ps -a -q)

# 删除所有已经停止的容器:
docker rm $(docker ps -a -q)

# 删除无用的镜像。 prune : 修剪;削减;修剪树枝;打杈;裁减;精简 :
docker image prune

# 删除所有未打标签的镜像。 dangling : 悬挂;悬摆 :
docker rmi $(docker images -q -f dangling=true)

# 删除所有镜像:
docker rmi $(docker images -q)

# 强制删除无法删除的镜像:
docker rmi -f <IMAGE_ID>
docker rmi -f $(docker images -q)

使用docker rm -f 启动失败容器ID 删除完后重新启动

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

已解决, 是一个很简单的命令使用错误导致的问题. 博客链接: https://blog.csdn.net/weixin_58625114/article/details/128824466?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128824466%22%2C%22source%22%3A%22weixin_58625114%22%7D.

如有误, 欢迎指正.