容器部署MySQL

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: docker run -d --name mysql --restart always \ -e MYSQL_ROOT_PASSWORD=admin \ -e TZ=Asia/Shanghai -p 3306:3306 \ -v /data/mysql:/var/lib/mysql \ mysql:5.7.31 \ --character-set-server=utf8 \ --collation-server=utf8_general_ci

1673477237447.png

一、镜像准备

mysql镜像下载地址:https://hub.docker.com/_/mysql

这里以下载5.7.31为例

docker pull mysql:5.7.31

下载后可以通过命令查看

docker images

可以将下载好的命令保存为本地文件,方便日后使用,避免重复下载(会保存在当前目录下)

docker save mysql:5.7.31 -o mysql.5.7.31.tar

可以将保存的镜像文件加载

docker load -i mysql.5.7.31.tar

二、一个简单的实例

运行实例

docker run -d --name mysql --restart always \
-e MYSQL_ROOT_PASSWORD=admin \
-e TZ=Asia/Shanghai -p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
mysql:5.7.31 \
--character-set-server=utf8 \
--collation-server=utf8_general_ci

说明:

  • name mysql 指定实例名称 “mysql” 可以根据需要更改
    restart always 容器退出时总是重启容器
    e MYSQL_ROOT_PASSWORD=admin 配置root用户的密码为 “admin”
    e TZ=Asia/Shanghai 设置容器时区为 亚洲/上海
    p 3306:3306 暴露容器的端口给主机,前面是主机端口,后面是容器端口
    v /data/mysql:/var/lib/mysql 容器卷挂载,宿主机的 “/data/mysql” 目录与容器的 "/var/lib/mysql" 挂载
    character-set-server=utf8 --collation-server=utf8_general_ci 设置默认编码格式为utf8,解决中文乱码问题

查看mysql日志

docker logs -f mysql

说明:

  • f 参数持续跟踪日志变化 可以省略
  • mysql 为容器名称,根据实际名称调整

通过shell访问容器内部

docker exec -it mysql bash

通过sql文件初始化数据库

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /data/db_backup.sql

三、可能出现的问题

创建mysql容器失败

创建mysql容器成功
docker run --name mysql \
-v /media/yoyo/w/MyDocument/Python_Test_Project/2020_08/20200825/mysql/conf:/etc/mysql/mysql.conf.d \
-v /media/yoyo/w/MyDocument/Python_Test_Project/2020_08/20200825/mysql/data:/var/lib/mysql \
-v /media/yoyo/w/MyDocument/Python_Test_Project/2020_08/20200825/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

可能的原因:

  1. -v 映射宿主的路径太长
  2. 宿主路径权限问题
  3. 如果目录中有文件,第二次创建容器失败

四、Docker创建进入mysql容器

运行”docker pull mysql”获取mysql镜像

[root@localhost ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
85b1f47fba49: Pull complete
5671503d4f93: Pull complete
3b43b3b913cb: Pull complete
4fbb803665d0: Pull complete
05808866e6f9: Pull complete
1d8c65d48cfa: Pull complete
e189e187b2b5: Pull complete
02d3e6011ee8: Pull complete
d43b32d5ce04: Pull complete
2a809168ab45: Pull complete
Digest: sha256:1a2f9361228e9b10b4c77a651b460828514845dc7ac51735b919c2c4aec864b7
Status: Downloaded newer image for mysql:latest

在后台启动mysql容器(–name指定了容器的名称,方便之后进入容器的命令行,MYSQL_ROOT_PASSWORD=admin指定了mysql的root密码,-d表示在后台运行)

Administrator@SKY-20170607FIJ MINGW64 ~
$ docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -d mysql
c6215e8c1fd73bc395a0c92e93f7e7145baedbe99c7ff639ccc9f5641bddf583

进入容器bash并进入mysql命令行:

Administrator@SKY-20170607FIJ MINGW64 ~
$ docker exec -it mysql bash
root@c6215e8c1fd7:/# mysql -uroot -padmin
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.20 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
Database
information_schema
mysql
performance_schema
sys

4 rows in set (0.00 sec)
mysql>

退出mysql镜像

exit
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
Kubernetes Cloud Native 微服务
企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
|
11天前
|
存储 弹性计算 运维
阿里云容器服务Kubernetes版(ACK)部署与管理体验评测
阿里云容器服务Kubernetes版(ACK)是一个功能全面的托管Kubernetes服务,它为企业提供了快速、灵活的云上应用管理能力。
75 2
|
19天前
|
关系型数据库 MySQL Docker
构建MySQL8.0.26镜像和容器
MySQL8.0.26 percona-toolkit Dockerfile
86 3
|
24天前
|
关系型数据库 MySQL Linux
Linux下怎么快速部署MySQL服务,并使用
Linux下怎么快速部署MySQL服务,并使用
33 5
|
23天前
|
存储 关系型数据库 MySQL
解读 MySQL 容器信息:`docker inspect` 字段详解
解读 MySQL 容器信息:`docker inspect` 字段详解
39 1
|
3天前
|
Oracle 关系型数据库 MySQL
【实操记录】MySQL二进制安装包部署
本文详细描述了采用二进制安装的各个步骤,具有较强的参考意义,基本可作为标准步骤实施
12 0
|
1月前
|
关系型数据库 MySQL Docker
docker部署mysql
docker部署mysql
43 1
|
10天前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
|
17天前
|
运维 Serverless 文件存储
函数计算产品使用问题之在利用Docker镜像部署应用时,容器内的应用如何能访问函数计算配置的NAS挂载
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
18天前
|
运维 Serverless 文件存储
函数计算产品使用问题之如何将本地代码与容器镜像一起打包部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。