要在本地启动一个 Docker 的 MySQL 服务,并允许其他 Docker 容器连接到该数据库,您可以按照以下步骤操作:
1. 确保已在本地安装了 Docker。您可以在终端中运行 `docker --version` 命令来检查 Docker 是否已正确安装。
2. 使用以下命令来拉取 MySQL 8.0 镜像:
```
docker pull mysql/mysql-server:8.0
```
3. 接下来,您可以使用以下命令来启动一个 MySQL 容器,并将其命名为 `mysql_container`:
```
docker run -d --name mysql_container -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 mysql/mysql-server:8.0
```
请将 `your_password` 替换为您所需的 MySQL root 密码。
4. 等待一段时间,直到容器启动并运行。您可以使用以下命令来检查容器的状态:
```
docker ps
```
如果 `mysql_container` 显示为已运行,则说明 MySQL 容器已成功启动。
5. 现在,您可以在另一个 Docker 容器中连接到 MySQL 容器。为此,您需要在另一个容器中使用 MySQL 客户端工具,例如 `mysql` 命令行工具。
首先,启动另一个容器,并将其连接到 MySQL 容器的网络中。您可以使用以下命令来创建一个新容器:
```
docker run -it --name client_container --network container:mysql_container mysql/mysql-server:8.0 mysql -h mysql_container -u root -p
```
此命令将创建一个新的容器,并将其连接到 `mysql_container` 的网络中。它还将启动 MySQL 客户端工具并连接到 MySQL 容器。
6. 在新容器中,您将被提示输入密码。输入之前在第 3 步中设置的 MySQL root 密码。
现在,您已成功连接到 MySQL 容器。您可以在新容器中执行任何 MySQL 命令,例如创建数据库、表格等。
请注意,上述步骤仅适用于本地 Docker 环境。如果您在生产环境中使用 Docker,建议采取适当的安全措施来保护数据库访问和密码。MySQL 8.0 镜像的默认账户名是 root。在运行 Docker 容器时,通过 `-e MYSQL_ROOT_PASSWORD=your_password` 参数设置的密码将用于 root 用户。您可以使用 root 用户连接到 MySQL 容器,并进行数据库管理操作。
(base) kaka@KakadeMacBook-Pro docker % docker run -d --name kaka_mysql_container -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql/mysql-server:8.0 590db2777460c09a6a77b788f233f3590f62d09370dd12008ea3ccc24c7539c6 docker: Error response from daemon: driver failed programming external connectivity on endpoint kaka_mysql_container (660c44bd96d080e7ac5e2fe9c2f335a314c6d0b0f4b64f2dd42db39ad5f766e1): Bind for 0.0.0.0:3306 failed: port is already allocated. (base) kaka@KakadeMacBook-Pro docker % 报错
这个错误通常是因为端口 3306 已经被其他进程占用导致的。您可以尝试以下解决方法:
1. 检查是否已经有其他容器或进程在使用端口 3306。您可以使用以下命令来查看正在运行的容器和它们使用的端口:
```
docker ps
```
如果在列表中找到正在运行的容器,并且该容器使用了端口 3306,则需要停止或删除该容器,或者修改您的 MySQL 容器使用的端口。
2. 如果没有其他容器使用端口 3306,但您仍然收到端口已被占用的错误消息,请检查是否有其他进程在您的主机上监听了该端口。您可以使用以下命令来查找占用端口 3306 的进程:
```
lsof -i :3306
```
如果找到了正在使用该端口的进程,请停止该进程或修改您的 MySQL 容器使用的端口。
3. 如果以上方法仍然无法解决问题,可以尝试修改您的 MySQL 容器使用的端口,例如将 `-p 3306:3306` 修改为 `-p 3307:3306`,将本地的 3307 端口映射到 MySQL 容器的 3306 端口。
请注意,确保不要使用已经被其他服务占用的端口,以避免冲突。
标签:容器,container,MySQL,端口,本地,mysql,3306,Docker From: https://www.cnblogs.com/kaka0318/p/17565246.html