在 Ubuntu 下通过 Docker 部署 MySQL 服务器

引言

Docker 是一个开源的容器化平台,能够让开发者将应用程序及其依赖打包成一个轻量级的、可移植的容器。它提供了对软件环境的一致性,极大地简化了应用的开发、测试和部署过程。MySQL 是一个流行的开源关系型数据库管理系统,支持 SQL 语言,广泛应用于各种项目中。将 MySQL 部署在 Docker 容器中,不仅可以简化安装流程,还能方便地进行版本管理与迁移。接下来,我们将详细介绍如何在 Ubuntu 系统下通过 Docker 部署 MySQL 服务器。

部署步骤

1. 安装 Docker

首先,确保你的系统上安装了 Docker。可以通过以下命令安装 Docker:

复制代码
sudo apt update
sudo apt install docker.io

安装完成后,启动 Docker 服务并设置为开机自启:

复制代码
sudo systemctl start docker
sudo systemctl enable docker

2. 拉取 MySQL 镜像

接下来,我们需要从 Docker Hub 拉取 MySQL 镜像。这里我们使用官方的 MySQL 镜像:

复制代码
sudo docker pull mysql:latest

3. 创建 MySQL 容器

现在,我们可以创建一个 MySQL 容器了。以下命令创建一个名为 my_mysql 的 MySQL 容器,并设置根密码为 your_password(请根据需要更改密码):

复制代码
sudo docker run --name my_mysql -e MYSQL_ROOT_PASSWORD=your_password -d mysql:latest
  • --name my_mysql:指定容器的名称
  • -e MYSQL_ROOT_PASSWORD=your_password:设置 MySQL 的 root 用户密码
  • -d:让容器在后台运行

4. 访问 MySQL 容器

可以通过以下命令进入 MySQL 容器并访问 MySQL 数据库:

复制代码
sudo docker exec -it my_mysql mysql -u root -p

系统会提示你输入密码,输入你在创建容器时设置的密码即可。

5. 数据持久化

为了确保数据不会在容器停止时丢失,我们需要配置数据卷。可以使用以下命令创建一个名为 mysql_data 的数据卷,并将其挂载到 MySQL 容器中:

复制代码
sudo docker run --name my_mysql -e MYSQL_ROOT_PASSWORD=your_password -v mysql_data:/var/lib/mysql -d mysql:latest

这样,即使容器被删除,数据也会保存在 mysql_data 卷中。

6. 常用参数说明

  • MYSQL_ROOT_PASSWORD:设置 MySQL root 用户的密码。
  • -v:用于挂载卷,确保数据持久化。

总结

通过以上步骤,我们成功在 Ubuntu 系统下通过 Docker 部署了 MySQL 服务器。无论是开发环境还是生产环境,这种方式都能让你快速上手并管理你的数据库。Docker 的灵活性和 MySQL 的强大功能结合在一起,让开发者的工作变得更加高效和便捷。快来试试吧!

相关推荐
疯癫的老码农19 小时前
【小白入门docker】创建Spring Boot Hello World应用制作Docker镜像并运行
java·spring boot·分布式·docker·微服务
小刘不想改BUG19 小时前
Docker 部署微服务项目详细步骤
docker·微服务·容器
橄榄熊19 小时前
Docker MySQL 使用全流程
mysql·docker·容器
前方一片光明19 小时前
Linux—升级openssh常见的问题与解决方案
linux·运维·服务器
阿巴~阿巴~19 小时前
MySQL复合查询(重点)
服务器·数据库·sql·mysql·ubuntu
wanhengidc20 小时前
云手机在软件资源方面的优势
运维·服务器·网络·游戏·智能手机
邂逅星河浪漫20 小时前
【DockerFile+Nginx+DockerCompose】前后端分离式项目部署(docker容器化方式)
nginx·docker·centos·部署·docker-compose·dockerfile·容器化部署
野熊佩骑21 小时前
CentOS二进制安装包方式部署K8S集群之系统初始化
运维·docker·微服务·云原生·容器·kubernetes·centos
烦躁的大鼻嘎21 小时前
【Linux】深入探索多线程编程:从互斥锁到高性能线程池实战
linux·运维·服务器·开发语言·c++·算法·ubuntu
xuhe221 小时前
告别 LaTeX 配置地狱:我的 Overleaf (ShareLaTeX-CE) 完整版私有化部署方案
linux·docker·overleaf