MySQL 团队维护的 MySQL Docker 镜像是专门为 Linux 平台构建的。不支持其他平台,在这些平台上使用这些 MySQL Docker 映像的用户需自行承担风险。有关在非 Linux 操作系统上运行这些容器的一些已知限制, 请参阅 此处的讨论。
下载 MySQL 服务器 Docker 镜像
在单独的步骤中下载服务器映像并不是绝对必要的;但是,在创建 Docker 容器之前执行此步骤可确保您的本地映像是最新的。要下载 MySQL 社区服务器映像,请运行以下命令:
docker pull mysql/mysql-server:tag
是您要拉取的映像版本的tag
标签(例如 、、5.5
、
或
)。如果
省略,则使用标签,并下载 MySQL Community Server 最新 GA 版本的图像。请参阅Docker Hub 中 mysql/mysql-server 页面上可用版本的标签列表
。
5.6
5.7
8.0
latest
:
tag
latest
您可以使用以下命令列出下载的 Docker 镜像:
$> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql/mysql-server latest 3157d7f55f8d 4 weeks ago 241MB
启动 MySQL 服务器实例
使用以下命令为 MySQL 服务器启动一个新的 Docker 容器:
docker run --name=mysql1 -d mysql/mysql-server:tag
为您的服务器容器(在示例中)--name
提供自定义名称
的选项是可选的;mysql1
如果未提供容器名称,则会生成一个随机容器名称。如果之前的docker pull或docker run命令没有下载指定名称和标签的 Docker 镜像,
则现在下载该镜像。下载完成后,开始对容器进行初始化,运行docker ps命令时,容器会出现在正在运行的容器列表中
;例如:
$> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a24888f0d6f4 mysql/mysql-server "/entrypoint.sh my..." 14 seconds ago Up 13 seconds (health: starting) 3306/tcp, 33060/tcp mysql1
容器初始化可能需要一些时间。当服务器准备好使用时,docker ps
命令STATUS
输出中容器的将从变为
。
(health: starting)
(healthy)
上面的docker run命令中使用
的-d
选项使容器在后台运行。使用此命令监视容器的输出:
docker logs mysql1
初始化完成后,命令的输出将包含为 root 用户生成的随机密码;使用例如以下命令检查密码:
$> docker logs mysql1 2>&1 | grep GENERATED
GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs
从容器内连接到 MySQL 服务器
服务器准备就绪后,您可以在刚刚启动的 MySQL 服务器容器中运行 mysql客户端,并将其连接到 MySQL 服务器。使用docker exec -it命令在您启动的 Docker 容器内启动一个 mysql客户端,如下所示:
docker exec -it mysql1 mysql -uroot -p
当询问时,输入生成的 root 密码(请参阅上面启动 MySQL 服务器实例中的最后一步,了解如何查找密码)。因为该
MYSQL_ONETIME_PASSWORD
选项默认为 true,
所以在将mysql客户端连接到服务器后,您必须通过发出以下语句来重置服务器 root 密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
替换newpassword
为您选择的密码。重置密码后,服务器就可以使用了。
容器外壳访问
要获得对 MySQL Server 容器的 shell 访问权限,请使用 docker exec -it命令在容器内启动 bash shell:
$> docker exec -it mysql1 bash
bash-4.2#
然后,您可以在容器内运行 Linux 命令。例如,要查看容器内服务器数据目录中的内容,请使用以下命令:
bash-4.2# ls /var/lib/mysql
auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql mysql.sock.lock private_key.pem server-cert.pem sys
ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 mysql.sock performance_schema public_key.pem server-key.pem
停止和删除 MySQL 容器
要停止我们创建的 MySQL 服务器容器,请使用以下命令:
docker stop mysql1
docker stop向mysqld进程发送 SIGTERM 信号 ,以便正常关闭服务器。
另请注意,当容器的主进程(在 MySQL Server 容器中为mysqld)停止时,Docker 容器会自动停止。
再次启动 MySQL 服务器容器:
docker start mysql1
要使用单个命令停止并重新启动 MySQL 服务器容器:
docker restart mysql1
要删除 MySQL 容器,请先将其停止,然后使用 docker rm命令:
docker stop mysql1
docker rm mysql1
如果要
同时删除服务器数据目录的 Docker 卷-v
,请将选项添加到
docker rm命令。
有关使用 Docker 部署 MySQL 服务器的更多主题
有关使用 Docker 部署 MySQL 服务器的更多主题,如服务器配置、持久数据和配置、服务器错误日志和容器环境变量,请参阅 第 2.5.8.2 节,“有关使用 Docker 部署 MySQL 服务器的更多主题”。