【问题标题】:Docker Error bind: address already in use when port is not in useDocker错误绑定:未使用端口时地址已在使用中
【发布时间】:2021-01-04 19:47:05
【问题描述】:

我正在为以下 docker-compose.yml 文件运行 docker-compose up

version: '3.7'
services:
  mysql_db_container:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
    ports:
      - "3306:3306"
    volumes:
      - mysql_db_data_container:/var/lib/mysql
  adminer_container:
    image: adminer:latest
    environment:
      ADMINER_DEFAULT_SERVER: mysql_db_container
    ports:
      - "8080:8080"

volumes:
  mysql_db_data_container:

我收到以下错误:

ERROR: for mysql_db_container  Cannot start service mysql_db_container: Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use
ERROR: Encountered errors while bringing up the project.

我尝试了以下方法:

docker-compose stop && docker-compose down

然后

docker ps -a

结果:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

我跑了:

netstat | grep :3306

它什么也没返回。

我认为问题可能出在 docker-compose 文件上,但我不确定。非常感谢有关如何释放端口以便容器运行的任何想法。

【问题讨论】:

  • 检查电脑上是否已经在运行mysql或mariadb。
  • 试试下面的命令,docker-compose down - 如果有 docker-compose.yml docker rm -fv $(docker ps -aq) 这将停止当前目录中的容器 - 所有容器将被删除 sudo lsof -i -P -n | grep 3306- 列出谁在使用端口 kill -9 3306 还可以尝试重新启动 docker 以查看是否可以解决问题。

标签: mysql docker docker-compose port netstat


【解决方案1】:

原因: MySQL 已经在计算机上运行。

解决办法: 在 Mac 上: 系统偏好设置 > MySQL > 停止 MySQL 服务器

【讨论】:

    猜你喜欢
    • 2016-10-24
    • 2020-10-06
    • 2018-04-14
    • 2011-01-09
    • 2019-08-21
    • 2012-05-02
    相关资源
    最近更新 更多