簡體   English   中英

使用主機網絡運行具有不同端口的多個 mysql 容器

[英]Runing multiple mysql containers with different port using host network

我有一個使用默認端口 3306 在主機上運行的 Mysql 服務器。我想使用網絡主機運行一個 MySQL docker 容器,但使用不同的端口。

我的配置是在 docker-compose 文件中定義的。 構建映像並嘗試運行容器后,它啟動和關閉並帶有端口沖突通知。

有沒有辦法在啟動前動態更改容器端口? 我不想使用網橋。

如果使用主機網絡是一項硬性要求,那么 Docker 空間中的任何內容都無法控制或限制服務使用或不使用哪些端口。 您需要更改特定於服務的配置文件、環境變量或命令行參數,以使其在其他地方偵聽。

特別是對於偵聽單個 TCP 端口的服務器(如大多數數據庫和基於 HTTP 的服務器),默認的 Docker 網橋/NAT 設置應該可以正常工作; 不需要像主機網絡和 macvlan 這樣的備用設置。 如果您願意使用標准設置,這很簡單:

version: '3'
services:
  mysql:
    image: mysql
    ports: ['9999:3306'] # listen on host port 9999 instead
docker run --name 'dockername' -e MYSQL_ROOT_PASSWORD='password' -p 1000:3306 -d mysql
docker exec -it 'dockername' mysql -uroot -p
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'password'
flush privileges;

這里 1000 是您要運行 mysql docker 容器的端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM