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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章