[英]How to connect to docker mysql container on remote machine
我有兩台機器。 我的機器有IP1(Europe)
,其他機器有公共IP2(USA)
。 在IP2
我有 mysql 容器運行,卷/var/lib/mysql
設置為復制到主機上的某個文件夾中~/mysqldatabase
。 添加了端口3306
防火牆規則。 我也有到機器的 ssh 連接。 所以我不確定從哪里開始。 通常當沒有泊塢窗時,我只添加
bind-address = 0.0.0.0
作為 mysql 中的配置,我打開防火牆端口3306
(或另一個指向 mysql 的端口)並且一切正常。 所以可能我可以在 IP2 機器上的 docker 之外安裝 mysql-server 包(主機是 ubuntu16.04)並將其設置為指向~/mysqldatabase
文件夾,但真的有必要這樣做嗎? 有沒有辦法直接從IP1
連接到IP2:mysql_container:mysql_database
我以兩種方式運行 mysql docker 容器。 一種是使用 docker 文件。 另一個是 systemctl 服務。
docker-compose.yml 的一部分:
version: "3"
services:
mysql:
image: mysql:5.7
volumes:
- /home/username/mysqldatabase:/var/lib/mysql
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: somedb
MYSQL_USER: someuser
MYSQL_PASSWORD: someuserpassword
mysql.service
[Unit]
Description=Run %p
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm -f %p
docker run --rm --name mysql -v /home/username/mysqldatabase:/var/lib/mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=rootpass -e MYSQL_DATABASE=somedb -e MYSQL_USER=someuser -e MYSQL_PASSWORD=someuserpassword \
mysql:5.7
ExecStop=/usr/bin/docker stop %p
[Install]
WantedBy=multi-user.target
為了讓事情更簡單,讓我們說我只使用第二種方法。
我沒有:
防火牆的結果
sudo netstat -tunlp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 24717/docker-proxy
我認為您的 mysql 容器正在偵聽 ipv6(查看您的 netstat 結果)。 原因可能是您的 docker 配置。 我不知道如何解決它,我個人只是在我的 docker 主機上關閉了 ipv6 以避免這個問題。
希望能幫助到你。
您沒有指定如何運行 mysql 容器...
您需要指定應該“發布”哪個端口,即哪個端口應該從“外部”到您的 mysql 容器的“內部”。
為此,您可以在執行docker-compose.yml
docker run
時指定-p
選項或將其添加到docker-compose.yml
。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:tag
或docker-compose.yml
version: '3.1'
services:
db:
image: mysql
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: example
在此處閱讀有關發布端口的更多信息。
對於那些即使在所有這些提示之后仍未設法連接的人。 考慮使用其他端口
例子:
ports:
- '3308: 3306'
我這樣解決了我的問題。
您可以修改您的my.cnf
並添加bind_address=0.0.0.0
這對我有用。 mysql 配置文檔:bind_address
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.