docker启动mysql容器失败端口被占用Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already

这篇具有很好参考价值的文章主要介绍了docker启动mysql容器失败端口被占用Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

启动失败:端口被占用

解决办法:

方法一:杀死进程

方法二:修改端口映射,宿主机不使用3306 


前言

我的mysql镜像版本:8.0.31
我的启动命令为: 

docker run \
--name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.31 \
--init-connect="SET collation_connection=utf8mb4_0900_ai_ci" \
--init-connect="SET NAMES utf8mb4" \
--skip-character-set-client-handshake

启动失败:端口被占用

Error response from daemon: driver failed programming external connectivity
 on endpoint mysql (11c5baee97c46d1f911f0ab48f5ee59b918dd27954102d40177997cba255962f): 
Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use

看错误信息得知该服务器的3306端口已经被占用了。一看果然是,我宿主机中的mysql正启动着,端口也是3306,不被占用才怪了。

查看宿主机MySQL状态:

service mysql status

查看所有被占用的端口: 

netstat -tanlp

解决办法:

要么将该3306端口的进程杀死,要么修改启动命令中的端口映射,也可能有其他方法,怎么选看自己。我因为想保持宿主机MySQL的状态所以只修改了启动命令。

方法一:杀死进程

查看当前占用端口:

netstat -tanlp

 杀死占用3306端口的那个进程:

kill 占用3306端口进程的PID

然后再重新启动docker中mysql容器

方法二:修改端口映射,宿主机不使用3306 

我这里改成了3307

docker run \
--name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.31 \
--init-connect="SET collation_connection=utf8mb4_0900_ai_ci" \
--init-connect="SET NAMES utf8mb4" \
--skip-character-set-client-handshake

修改之后我再重新启动就成功了!通过 docker ps 查看容器也没有闪退!文章来源地址https://www.toymoban.com/news/detail-656174.html

[root@anonymous ~]# docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED        STATUS                  PORTS                                                  NAMES
2de69ad9307f   mysql:8.0.31                 "docker-entrypoint.s…"   26 hours ago   Up Less than a second   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql
2047f35b84b4   seataio/seata-server:1.4.2   "java -Djava.securit…"   2 days ago     Up Less than a second   0.0.0.0:8091->8091/tcp, :::8091->8091/tcp              seata-server
036c3cd0c524   nacos/nacos-server:2.0.3     "bin/docker-startup.…"   3 days ago     Up Less than a second   0.0.0.0:8848->8848/tcp, :::8848->8848/tcp              nacos

到了这里,关于docker启动mysql容器失败端口被占用Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker启动mysql报错:Error invoking remote method ‘docker-start-container‘: Error: (HTTP code 500) server

    1、问题 docker启动mysql报错:Error invoking remote method \\\'docker-start-container\\\': Error: (HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:3306 - 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 2、解决办法 这是MySQL镜像安装中出现

    2024年02月16日
    浏览(48)
  • systemctl docker start 启动失败 解决办法

    1.systemctl docker start 启动失败 yum 卸载重装   无用 重启虚拟机 无用 使用 systemctl status docker.service 查看结果 ● docker.service - Docker Application Container Engine    Loaded: loaded (/etc/systemd/system/docker.service; disabled; vendor preset: disabled)    Active: failed (Result: start-limit) since Sun 2022-11-13 03:01:3

    2024年02月04日
    浏览(74)
  • 【经验文档】 docker 启动失败 Failed to start Docker Application Container Engine.

    修改 docker 的镜像源改为国内镜像源之后,重启docker失败,使用 systemctl status docker.service 查看docker容器状态,发现报错 :Failed to start Docker Application Container Engine. 经过排查,发现是因为在修改镜像源配置文件 /etc/docker/daemon.json 后,缺少了 \\\"storage-driver\\\": \\\"devicemapper\\\" 正确的文件应

    2024年02月16日
    浏览(55)
  • mysql启动Starting MySQL ERROR! Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/

    原因:mysql.server里面这两行没有添加路径,添加路径后即可解决问题 之后又出现新的报错: Starting MySQL.2023-11-23T17:38:37.571813Z mysqld_safe error: log-error set to \\\'/var/log/mariadb/mariadb.log\\\', however file don\\\'t exists. Create writable for user \\\'mysql\\\'.  ERROR! The server quit without updating PID file (/data/mysql-5.

    2024年02月02日
    浏览(54)
  • Docker: Error response from daemon: Ports are not available 端口没被占用,却显示被占用

    今天在Windows下用Docker跑个RocketMQ,启动的时候报错,说端口占用,但其实并没有占用。 docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:10911 - 0.0.0.0:0: listen tcp 0.0.0.0:10911: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 看错误信息说是端

    2024年02月11日
    浏览(59)
  • docker 容器与主机端口 在容器中启动服务 多容器端口冲突问题

    容器内的端口等与主机的端口等是分离的,容器中的环境可理解为是虚拟的. 容器中使用的网络环境与主机保持一致: 示例: docker run -it --network host image:tag 其中: --network host表示容器中使用的端口 IP等都是主机上的。 容器中端口可以映射到主机端口,且多个不同的主机端口

    2024年02月16日
    浏览(46)
  • docker启动容器服务之后访问失败

    注:在进行docker容器启动宿主机进行容器访问时,无需进行网络的配置,docker容器在启动时会自动解决 第一种原因及修改方法 在进行启动的时候,启动语句中没有进行端口映射,导致在进行访问的时候无法找到正确的端口 正确的镜像的启动方式为 正常容器启动后的截图 进

    2024年02月02日
    浏览(40)
  • docker为已启动的容器添加端口映射

    针对已运行的容器添加端口映射 1、查看容器是否映射端口 有端口映射: 无端口映射: 2、查看容器完整Id 3、进入docker容器目录查看 4、根据得到的容器完整id进入目录 目录中分别有两个文件: hostconfig.json 和 config.v2.json ,直接查看文件内容比较混乱可以下载到本机,使用

    2024年02月16日
    浏览(51)
  • Linux 中启动 Docker 服务时遇到错误消息 `failed to start docker.service: unit docker.service is masked` 启动失败的解决方法

    如果在 Linux 中启动 Docker 服务时遇到错误消息 `failed to start docker.service: unit docker.service is masked`,那么说明 Docker 服务已经被系统禁用了。 在 Linux 系统中,可以使用 `systemctl` 命令来管理系统服务。如果某个服务被禁用,那么该服务的 `systemd` 单元文件会被标记为 \\\"masked\\\"。标记

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包