如何将MySQL客户端连接到在Docker中运行的服务器
问题描述:
我首次使用Docker。我正尝试将基于docker的MySQL与我的Navicat客户端连接起来。我如何获得码头IP,然后将其用于连接?以下是一些细节:如何将MySQL客户端连接到在Docker中运行的服务器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b984b6659d20 mysql:5.7 "docker-entrypoint.sh" 8 minutes ago Up 7 minutes 3306/tcp myre_mysql_run_1
d34d8974912c myre_php-apache-engine "/usr/local/bin/entry" 20 hours ago Up 7 minutes 80/tcp myre_php_apache_engine_dev
981c2a7fa83b mysql:5.7 "docker-entrypoint.sh" 20 hours ago Up 47 seconds 3306/tcp myre_mysql_dev
472531e09d08 jwilder/nginx-proxy "/app/docker-entrypoi" 20 hours ago Up 7 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx_proxy
答
如果您需要使用客户端连接到Docker容器中的MySQL,则需要与主机进行端口映射。
我看到你MySQL容器没有使用将容器端口映射到主机端口,所以你不能使用MySQL客户端来连接MySQL服务器。
您可以使用-p参数指定端口映射。例如,如果您需要使用端口3306连接到MySQL服务器,请使用以下命令创建MySQL容器。 PS:您需要更改以下命令的一些设置。
docker run --name container-name -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=database-name -e MYSQL_USER=user -e MYSQL_PASSWORD=password mysql:5.7
答
如果您需要从外部访问mysql容器。比你需要映射服务器端口上的容器端口(使用-p
)。
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_USER=test -e MYSQL_PASSWORD=test -d mysql:latest
现在,您可以连接到使用你的服务器+端口的IP您的容器。在我的情况下,我在一个VLAN中。我的服务器的IP是192.168.140.30。所以例如当我ssh到我的服务器时,我使用该IP。现在我已经将我的容器的端口映射到服务器的端口上(使用-p 3306:3306
这意味着:将我的容器的端口3306映射到我的服务器的端口3306(这样我就可以使用服务器IP来连接)
这是否会表彰重启已经运行MySQL吗?我的Navicat的客户端是在我的笔记本在安装了码头工人 – Volatil3
第一个命令将启动一个新的MySQL容器,你需要公开和映射端口当容器启动,所以如果你没有这样做,你需要删除旧的mysql并使用上面的命令重新启动它(不知道你是否使用'-v'来重用你的卷) – lvthillo
你需要地图'-p 3306:3306',你可以使用lo calhost:3306在你的Navicat中。 – lvthillo