MySQL Docker – 两个 MySQL Docker 镜像的区别
MySQL Docker 镜像是使用 Docker 技术构建的 MySQL 服务器实例。目前,Docker Hub 上提供了多个不同的 MySQL Docker 镜像。其中,就有两个比较流行的镜像:mysql/mysql-server
和 mysql:latest
。那么,这两个 MySQL Docker 镜像有什么区别呢?
阅读更多:MySQL 教程
mysql/mysql-server
镜像
mysql/mysql-server
镜像是基于 Oracle 官方的 MySQL 镜像构建的。该镜像是官方推荐使用的 MySQL Docker 镜像之一。该镜像默认使用 UID 1001 和 GID 0 的用户运行 MySQL 服务器实例,该用户不具有系统权限。如果需要操作系统权限(例如更改文件夹权限等),需要使用 root 权限进入容器。
创建 mysql/mysql-server
容器的命令:
docker run -d \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=<password> \
mysql/mysql-server:latest
其中参数解释:
-d
:指定容器在后台运行--name
:指定容器的名称-e
:设置容器的环境变量,这里设置了 MySQL 的 root 密码
mysql:latest
镜像
mysql:latest
镜像是 MySQL 官方提供的 Docker 镜像。该镜像是从源代码构建的,包含了所有的 MySQL 功能。默认情况下,该镜像使用 root
用户来运行 MySQL 服务器实例,具有操作系统权限。可以通过user
参数设置使用其他用户运行MySQL。
创建 mysql:latest
容器的命令:
docker run -d \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=<password> \
mysql:latest
其中参数解释与上面的mysql/mysql-server
镜像类似。
区别
两个镜像的主要区别在于基础镜像的不同:mysql/mysql-server
是基于 Oracle 官方的 MySQL 镜像构建的,而 mysql:latest
是从源代码构建的。
此外,两个镜像默认运行 MySQL 实例的用户也有所不同。mysql/mysql-server
镜像默认使用 UID 1001 和 GID 0 的用户运行 MySQL 服务器实例,而 mysql:latest
镜像默认使用 root 用户。这也意味着,使用 mysql/mysql-server
镜像时需要注意容器内的用户权限问题,而使用 mysql:latest
镜像时则需要注意在容器内如何使用 root 权限。
另外,mysql/mysql-server
镜像还提供了一些方便的脚本和工具,例如 mysqlrouter
和 mysqldump
,而 mysql:latest
镜像则不包含这些附加工具。
总结
在选择 MySQL Docker 镜像时,需要看自己的实际情况需求。如果需要更多的方便工具和脚本,建议选择 mysql/mysql-server
镜像;如果不需要这些工具,同时也需要使用 root 权限操作,那么 mysql:latest
镜像可能是更为合适的选择。