mysql - 无需 docker-compose 即可访问 Docker (MySQL) 容器?

标签 mysql macos docker docker-compose docker-for-mac

我是 Docker 新手,可能会感到困惑,但假设我有多个项目,并且我想对它们使用相同的 docker MySQL 数据库。

其中一些项目也运行 Docker,有些则不运行 Docker,运行 Docker 的项目在存储库中有 docker-compose.yml,所以我无法更改此文件,对于其他项目,我根本不想使用 Docker(除了基础容器)。

我拉了https://hub.docker.com/_/mysql/已经然后像这样运行它:

docker run --name mysql-experiment -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.21

当我运行docker ps时,我可以看到mysql-experiment正在运行。

我可以使用docker exec -it mysql-experiment bash登录容器。但我对 MySQL 的掌握不够好,无法通过终端管理它。

我的问题是 - 我如何设置这个容器,以便它获得自己的端口和 IP,并且我可以在本地网络中的任何地方使用它,而无需 docker-compose?

现在它在端口 3306 上的本地主机上运行(根据 docker ps),但是当我尝试在 Sequel Pro 中访问 127.0.0.1:3306 时,我得到:

Unable to connect to host 127.0.0.1, or the request timed out.

另外,我不确定应该在这个容器中使用什么用户名(我已经尝试过 admin/root/empty)

[编辑]

我知道像这样的问题还有很多,但它们都涉及 docker-compose。

最佳答案

目前,mysql 进程在容器本身的端口 3306 上运行。您可以使用 docker exec ssh 进入容器来验证该进程是否正在运行,就像您所做的那样,然后执行以下操作:

mysql -u root -p root -h localhost

这里的localhost属于mysql容器。为了通过本地环境(我假设在本例中是 docker 主机)访问 mysql 进程,您需要发布端口。这可以使用 docker run 中的 -p 标志来完成:

docker run --name mysql-experiment -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.21

在这里,我们将主机的 3306 端口绑定(bind)到容器的 3306 端口。如果你想使用本地主机上的不同端口(例如 3307)访问 mysql,你可以执行 -p 3307:3306

引用号:https://docs.docker.com/engine/reference/run/#expose-incoming-ports

关于mysql - 无需 docker-compose 即可访问 Docker (MySQL) 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49210981/

相关文章:

mysql - MySQL 中的非空列和完整性检查

mysql - NodeJS 转换 MYSQL 日期

javascript - 为什么第一个程序有效而第二个程序无效?

c - 通过终端在 mac 中运行 c 程序的时间?

macos - 从另一个 Cocoa 应用程序访问 View

mysql - 即使数据集中不存在月份,也会从查询中返回每月数据

java - 在 NetBeans 7.4 中为 Java 程序设置动态 Apple 菜单标题

linux - 应用 CPU Hogs 时的 Docker 和 CPU 优先级

.net - 无法从Docker托管的Web应用程序调用外部api

node.js - 如何在docker中执行sails js