docker之旅 7.docker的端口映射解决所有不服

这是我的 docker-compose.yml 文件

version: '2.x'

services:
  myNginx:
    image: nginx
    restart: always

  myRedis:
    image: redis
    restart: always
    ports:
      - "6379:6379"

  mysql:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: henry6764  # 设置 MySQL root 用户的密码
      MYSQL_USER: henry  # 设置自定义用户名
      MYSQL_PASSWORD: henry6764  # 设置自定义用户的密码
    ports:
      - "3307:3306"  # 将容器的 MySQL 默认端口映射到宿主机的 3306 端口
    volumes:
      - /home/henry/mysqlFilePath:/var/lib/mysql  # 将容器内的 MySQL 数据目录挂载到宿主机上

在这里,我将宿主机的 3307 端口 映射到 mysql容器的 3306端口。

下面看下 文心一言 对docker端口映射的解释:

  • 当您映射了宿主机的3307端口到容器的3306端口后,您可以通过宿主机的IP地址和映射的端口来访问MySQL服务。这是Docker端口映射功能的典型用法,它允许您通过宿主机的某个端口来访问容器内的服务,即使服务在容器内部监听的是另一个端口。
  • 在这种情况下,您不需要知道容器的IP地址,因为Docker的端口映射功能会在宿主机上创建一个监听在特定端口(本例中是3307)的代理,该代理会将流量转发到容器内的相应端口(本例中是3306)

因此,我在宿主机上面,有2种方式访问 mysql容器。

1.使用 mysql 容器的Ip 地址 + 3306 端口访问

2.使用 宿主机的IP地址(比如我这里的宿主机就是我的centos7系统) + 3307 端口 访问

有了宿主机这一层的 端口映射之后,外部 直接访问 宿主机ip + 3307 端口,就可以访问到 mysql容器了。

 

至于docker 是如何使用这个端口映射,如何维护这个端口映射,我没有去深入研究。知道这是Docker端口映射功能的典型用法即可。

docker 端口映射,解决所有不服!

 

posted @ 2024-04-27 08:35  He_LiangLiang  阅读(23)  评论(0编辑  收藏  举报