返回

m1 Mac 使用 Docker 创建 MySQL,踩坑记

前端







大家好,我是[您的名字],一名技术博客创作专家。今天,我想和大家分享一下我在 m1 Mac 上使用 Docker 创建 MySQL 的过程,以及在使用 arm 芯片运行 Docker 时遇到的坑。

## 前言

随着 Apple 推出搭载 M1 芯片的 Mac 电脑,越来越多的开发者开始在 Mac 上使用 Docker 来运行各种容器化应用。Docker 是一个开源的容器引擎,可以轻松地创建、部署和运行应用程序,而无需考虑底层基础设施。

## 创建 MySQL 容器

首先,我们需要创建一个 MySQL 容器。我们可以使用以下命令:

docker run --name ww-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0


这条命令将创建一个名为 `ww-mysql` 的容器,并将其映射到本地 3306 端口。我们还可以通过 `-e` 选项来设置 MySQL 的 root 密码。

## 访问 MySQL 容器

创建完 MySQL 容器后,我们可以使用以下命令来访问它:

docker exec -it ww-mysql bash


这条命令将在 MySQL 容器中打开一个交互式终端。我们可以使用 MySQL 的命令行工具来管理数据库。

## 使用 arm 芯片运行 Docker

在使用 arm 芯片运行 Docker 时,我们需要特别注意以下几点:

* 确保您使用的是适用于 arm 芯片的 Docker 镜像。
* 某些 Docker 镜像可能不适用于 arm 芯片。
* 在使用 Docker 时,可能会遇到一些性能问题。

## 踩坑记录

在使用 m1 Mac 上使用 Docker 创建 MySQL 时,我遇到了以下几个坑:

* **无法连接到 MySQL 容器。** 

我最初使用以下命令来连接到 MySQL 容器:

mysql -h 127.0.0.1 -P 3306 -u root -p


但是,我无法连接到容器。经过一番排查,我发现这是因为我没有在 Docker 中启用 TCP 端口映射。要启用 TCP 端口映射,我们需要在创建容器时使用 `-p` 选项,例如:

docker run --name ww-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0


* **MySQL 容器崩溃。** 

在使用 MySQL 容器时,我遇到了容器崩溃的问题。经过一番排查,我发现这是因为我在容器中使用了过多的内存。要解决这个问题,我们需要在创建容器时使用 `--memory` 选项来限制容器的内存使用量,例如:

docker run --name ww-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 --memory=1G mysql:8.0


## 总结

以上就是我在 m1 Mac 上使用 Docker 创建 MySQL 时遇到的坑。希望对有需要的读者有所帮助。

## 更多资源

* [Docker 文档](https://docs.docker.com/)
* [MySQL 文档](https://dev.mysql.com/doc/)
* [在 m1 Mac 上运行 Docker 的指南](https://docs.docker.com/desktop/mac/apple-silicon/)

## 关于我

我是[您的名字],一名技术博客创作专家。如果您有任何问题,请随时与我联系。