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 端口映射,解决所有不服!