【发布时间】:2019-07-08 16:04:35
【问题描述】:
我刚开始学习 docker,对 docker 中的端口映射有点困惑。我的容器(运行 mysql 服务)运行如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
59efytd163d3 myapp:mysql "docker-entrypoint.s…" 10 months ago Up 5 minutes 0.0.0.0:9991->3306/tcp
对于PORTS 字段,0.0.0.0:9991->3306/tcp 是什么意思?
我检查了在容器外运行的mysql的端口号:
john@MacBook-Pro:~/Documents$ lsof -n -P -i TCP | grep mysql
mysqld 1742 john 58u IPv4 0xd3c7de51ef6d2a49 0t0 TCP 127.0.0.1:3306 (LISTEN)
如您所见,端口是3306,所以我认为容器内运行的mysql的端口号必须是9991。但是,当我进入容器并检查mysql后:
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT'
-> ;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
它还显示 3306。
容器内外运行的mysql服务的端口号都是3306,那么0.0.0.0:9991->3306/tcp是什么意思呢? 0.0.0.0:9991 指的是什么?
【问题讨论】: