docker 下 MySQL 容器的一些问题


一个关于 ipv6 和 ipv4 的问题

我在 WSL2-debian11 环境内,使用 docker20.10.17 和 MySQL8.0 ,并使用 dockerfile 以 MySQL 为基础构建并运行新镜像。

mysql 的 my.cnf 文件配置如下

[mysqld]pid-file        = /var/run/mysqld/mysqld.pidsocket          = /var/run/mysqld/mysqld.sockdatadir         = /var/lib/mysql# By default we only accept connections from localhostbind-address   = 0.0.0.0# Disabling symbolic-links is recommended to prevent assorted security risksdefault-time_zone = '+8:00'symbolic-links=0character-set-server=utf8mb4[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4

dockerfile 如下

FROM mysql:latestMAINTAINER cfEXPOSE 3306LABEL version="0.1" description="MySQL 服务器" by="cf"ENV MYSQL_ROOT_PASSWORD cf1111ENV MYSQL_USER="cf"ENV MYSQL_PASSWORD="cfcfcf"RUN mkdir -p /var/log/mysqlRUN mkdir -p /etc/mysqlRUN mkdir -p /var/lib/mysqlCOPY log /var/log/mysqlCOPY conf/my.cnf /etc/mysql/my.cnfCOPY data /var/lib/mysqlCOPY data-files /var/lib/mysql-files

使用如下命令构建、运行镜像

docker build -t gettorrentmysql:0.1 mysql80docker run gettorrentmysql:0.1           

运行后通过 netstat -tunl 命令发现,容器监听了ipv6下的:::3306 端口,而非ipv4

而使用 windows 端的 MySQL workbench 新建连接,发现 hostname 填写::和 0:0:0:0:0:0:0:0 都不能连接反而是 127.0.0.1 才能连接。

问题:workbench 使用的 ip 地址和 wsl 内容器暴露的 ip 地址为什么不一致?哪个才是真的?或者 workbench 有一些优化?百思不得其解,希望各位能帮忙解惑,感谢!

最新回复 (2)
  • westoy3天前
    引用2
    0.0.0.0 不是一个 IP , 是可以匹配所有 IP , 服务端绑定这个 IP 就等于绑定设备上所有地址了, 拿来连当然是不行的
  • 同意楼上
  • 游客
    4
返回