不同的应用程序可能依赖于不同版本的 MySQL 或具有不同的配置需求。通过 Docker,每个 MySQL 实例都可以运行在独立的容器中,与宿主机以及其他容器的环境相互隔离。这有效避免了因不同应用对 MySQL 版本、依赖库等方面的差异而导致的冲突。例如,应用 A 需要 MySQL 5.7 版本,而应用 B 需要 MySQL 8.0 版本,使用 Docker 可以轻松创建两个不同版本的 MySQL 容器,满足各自的需求,且不会相互干扰。
在 Docker 中,可以根据应用的实际需求为每个 MySQL 容器分配特定的 CPU、内存等资源。这样能确保关键应用的数据库获得足够的资源,保证性能稳定,同时也能避免资源的过度分配或浪费。
使用 Docker 安装 MySQL 只需一条简单的命令即可从 Docker Hub 拉取官方镜像并创建容器,相比传统的在服务器上手动安装 MySQL 及其依赖,大大节省了安装和配置的时间。
Docker 容器具有高度的可移植性。一旦在一个环境中创建并配置好 MySQL 容器,就可以将该容器及其包含的数据和配置轻松迁移到其他支持 Docker 的环境中,无论是在本地开发环境、测试环境还是生产环境之间迁移,都能快速实现,无需在新环境中重新进行复杂的安装和配置过程
在开发和测试过程中,可能需要频繁切换 MySQL 版本以测试应用在不同版本下的兼容性。通过 Docker,只需拉取相应版本的 MySQL 镜像,创建新的容器即可实现版本切换,而无需在宿主机上进行繁琐的版本卸载和安装操作。
1.拉取MySQL镜像
1.1 拉取最新版本
如果不标注版本,就是拉取最新版本
docker pull mysql:latest
# 等同于上一句命令
docker pull mysql
1.2 拉取指定版本
docker pull mysql:5.7
我们使用mysql5.7作为示例操作
[root@192 /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
20e4dcae4c69: Pull complete
1c56c3d4ce74: Pull complete
e9f03a1c24ce: Pull complete
68c3898c2015: Pull complete
6b95a940e7b6: Pull complete
90986bb8de6e: Pull complete
ae71319cb779: Pull complete
ffc89e9dfd88: Pull complete
43d05e938198: Pull complete
064b2d298fba: Pull complete
df9a4d85569b: Pull complete
Digest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@192 /]#
查看镜像,mysql5.7已经存在
2.运行MySQL容器
2.1 一般操作
命令:
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
[root@192 /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@192 /]# docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2e1854c7aa11abfce0a325672e3196e08125b6024d19155cb44cfac61c8e954a
[root@192 /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e1854c7aa11 mysql:5.7 "docker-entrypoint.s…" 3 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp stupefied_wiles
[root@192 /]#
进入容器并打开数据库