在 Docker 中安装并运行三个 MySQL 数据库

1. 确保 Docker 已安装和运行

确保 Docker 服务已在你的系统中正确安装和运行,可以通过以下命令检查:

docker --version
docker info

2. 拉取 MySQL 镜像

从 Docker Hub 拉取最新版 MySQL 镜像:

docker pull mysql:latest

3. 创建 MySQL 数据库的网络(可选)

为了便于管理多个容器,可以创建一个自定义网络:

docker network create mysql-network

4. 创建并运行第一个 MySQL 容器

运行以下命令启动第一个 MySQL 容器:

docker run -d \
  --name mysql-db1 \
  --network mysql-network \
  -e MYSQL_ROOT_PASSWORD=rootpassword1 \
  -e MYSQL_DATABASE=db1 \
  -e MYSQL_USER=user1 \
  -e MYSQL_PASSWORD=password1 \
  -p 3306:3306 \
  mysql:latest

参数说明:

  • --name mysql-db1:容器名称。
  • --network mysql-network:使用之前创建的网络。
  • -e MYSQL_ROOT_PASSWORD=rootpassword1:设置 root 用户密码。
  • -e MYSQL_DATABASE=db1:初始化的数据库名称。
  • -e MYSQL_USER=user1-e MYSQL_PASSWORD=password1:设置普通用户及其密码。
  • -p 3306:3306:将本机的 3306 端口映射到容器的 3306 端口。

5. 创建并运行第二个 MySQL 容器

启动第二个 MySQL 容器,需确保端口不冲突:

docker run -d \
  --name mysql-db2 \
  --network mysql-network \
  -e MYSQL_ROOT_PASSWORD=rootpassword2 \
  -e MYSQL_DATABASE=db2 \
  -e MYSQL_USER=user2 \
  -e MYSQL_PASSWORD=password2 \
  -p 3307:3306 \
  mysql:latest

6. 创建并运行第三个 MySQL 容器

启动第三个 MySQL 容器,继续设置不同的端口:

docker run -d \
  --name mysql-db3 \
  --network mysql-network \
  -e MYSQL_ROOT_PASSWORD=rootpassword3 \
  -e MYSQL_DATABASE=db3 \
  -e MYSQL_USER=user3 \
  -e MYSQL_PASSWORD=password3 \
  -p 3308:3306 \
  mysql:latest

7. 验证容器运行状态

使用以下命令查看运行中的容器:

docker ps

你将看到类似如下输出:

CONTAINER ID   IMAGE          COMMAND                  STATUS         PORTS                   NAMES
abcd1234       mysql:latest   "docker-entrypoint.s…"   Up 10 seconds  0.0.0.0:3306->3306/tcp  mysql-db1
efgh5678       mysql:latest   "docker-entrypoint.s…"   Up 10 seconds  0.0.0.0:3307->3306/tcp  mysql-db2
ijkl9101       mysql:latest   "docker-entrypoint.s…"   Up 10 seconds  0.0.0.0:3308->3306/tcp  mysql-db3

8. 连接到 MySQL 数据库

使用 mysql 客户端或其他工具连接到 MySQL 数据库。示例如下:

连接到第一个数据库:

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

连接到第二个数据库:

mysql -h 127.0.0.1 -P 3307 -u user2 -p

连接到第三个数据库:

mysql -h 127.0.0.1 -P 3308 -u user3 -p

优化和注意事项:

  1. 持久化数据
    如果需要数据持久化,可以为每个容器挂载宿主机目录:

    -v /path/to/db1:/var/lib/mysql
    
  2. 资源限制
    可以通过 --memory--cpus 参数限制容器资源使用。

  3. 备份与恢复
    定期使用 docker exec 结合 mysqldump 进行备份。


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐