簡體   English   中英

連接到Microsoft Azure VM中Docker容器內的MySQL Server

[英]Connect to MySQL Server inside Docker container in an Microsoft Azure VM

我在Microsoft Azure上創建了Ubuntu 15.10 VM。 在服務器上,我創建了一個運行MySQL的docker容器(IP:172.17.0.2)

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4255233555db        mysql               "/entrypoint.sh mysql"   16 hours ago        Up 16 hours         0.0.0.0:3306->3306/tcp   compose_mysql_1

我可以通過ssh連接到VM,然后訪問在docker容器中運行的MySQL-Server。

現在,我想從外部訪問MySQL-Server,以便我在Microsoft Azure(相同的資源組)上的WebApp可以連接到數據庫。

我已經將虛擬機的端口3306轉發到了172.17.0.2:3306。

使用本地計算機上的MySQL-Workbench,我無法連接到MySQL-Server。 實際上,我不確定需要提供哪些憑據才能進行連接。 我嘗試使用VM的公共IP和MySQL-Server的root密碼進行嘗試。 但是我不應該在某處也為虛擬機本身提供密碼和用戶嗎?

除了實際VM上的防火牆之外,Azure使用單獨的VPC網絡安全組管理端口安全。 默認情況下,與您的VM關聯的Network組不允許端口3306上的入站TCP連接。您必須手動添加該端口:

  1. 轉到Network interfaces

圖片1

  1. 選擇您的網絡接口

在此處輸入圖片說明

  1. 選擇Network security group

在此處輸入圖片說明

  1. 選擇您的組(這里通常只有一個)

在此處輸入圖片說明

  1. 選擇Inbound security rules

在此處輸入圖片說明

  1. 單擊Add並填寫,如下所示

在此處輸入圖片說明

  1. 最后,應用更改並等待1-2分鍾(新設置可以正確傳播的時間,盡管應該立即生效)

在此處輸入圖片說明

魔法!

直接使用官方MySQL映像的替代方法

我也很難運行和訪問官方的MySQL映像。 sameersbn / docker-mysql提供了一個簡單易用的包裝程序,可讓您指定要設置的用戶和數據庫。

我的docker-compose文件包含以下部分:

db:
  image: sameersbn/mysql:latest
  volumes:
    - /opt/mysql/data:/var/lib/mysql
  environment:
    - DB_USER=${DB_USER}
    - DB_PASS=${DB_PASS}
    - DB_NAME=theDatabaseName
  ports:
    - "3306:3306"

細節:

  • image -上述包裝器。
  • volumes -在持久主機上映射數據。
  • environment -定義數據庫設置的變量。 可以像使用DB_NAME一樣提供純文本,也可以通過${...}語法訪問環境變量。
  • ports映射主機上的端口3306,以便可以對其進行遠程訪問。

暫無
暫無

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

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