我是 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/