首页 > 解决方案 > Docker没有在主机上为Mac上的容器打开端口

问题描述

我有一个 docker-compose 文件来运行两个不同版本的 mysql:

version: "3.8"
services:

  mysql_5.6:
    image: mysql:5.6
    restart: always
    ports:
      - "3307:3306"

  mysql_latest:
    image: mysql:latest
    restart: always
    ports:
      - "3308:3306"

我从这些开始docker-compose -f docker/docker-compose.yml up -d。运行docker ps我得到:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
9649cd3df592        mysql:latest        "docker-entrypoint.s…"   About a minute ago   Restarting (1) 28 seconds ago                       docker_mysql_latest_1
339b5a7f2262        mysql:5.6           "docker-entrypoint.s…"   About a minute ago   Restarting (1) 28 seconds ago                       docker_mysql_5.6_1

如您所见,端口部分为空。使用 telnet 或 MySqlWorkbench 连接给了我预期的连接被拒绝。我在 macOS Catalina 上运行 Docker Desktop 2.3.0.3 (45519)。我添加了 Docke 以允许在防火墙设置中打开连接。

如何让 Docker 打开我的 mac 上的端口?

标签: dockerdocker-compose

解决方案


似乎问题是我没有指定root密码。这现在有效:

version: "3.7"
services:

  mysql_5.6:
    image: mysql:5.6.44
    restart: always
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ""
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

  mysql_latest:
    image: mysql:latest
    restart: always
    ports:
      - "3308:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ""
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"

推荐阅读