Docker-部署运行MySQL容器

docker 安装mysql 8.0.35 docker mysql 阅读详情

2. MySQL

2.1. 快速参考

2.2. 支持的标签和各自的 Dockerfile 链接

2.3. 快速参考(续)

在哪里提交问题:https://github.com/docker-library/mysql/issues

支持的架构:(更多信息)amd64

发布的镜像工件详情:repo-info repo 的 repos/mysql/ 目录(历史)(镜像元数据、传输大小等)

镜像更新:official-images repo 的 library/mysql 标签
官方图像 repo 的库/mysql 文件(历史)

此描述的来源:docs repo 的 mysql/ 目录(历史)

2.4. 如何使用镜像

2.4.1. 启动一个mysql服务器实例

启动 MySQL 实例很简单:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

其中 some-mysql 是您要分配给容器的名称, my-secret-pw 是要为 MySQL root 用户设置的密码,而 tag 是指定您想要的 MySQL 版本的标签。 有关相关标签,请参见上面的列表。

以下是示例(通常要设置时区),注意-v 这里是挂载磁盘,请提前创建目录/var/mysql/data,/var/lib/mysql是容器里的原持久化目录:

docker run --name mysql202201 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -v /var/mysql/data:/var/lib/mysql -d mysql:5.7
2.4.2. 从 MySQL 命令行客户端连接到 MySQL

以下命令启动另一个 mysql 容器实例并针对您的原始 mysql 容器运行 mysql 命令行客户端,允许您针对您的数据库实例执行 SQL 语句:

$ docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p

其中 some-mysql 是原始 mysql 容器的名称(连接到 some-network Docker 网络)。

此镜像也可以用作非 Docker 或远程实例的客户端:

$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

有关 MySQL 命令行客户端的更多信息,请参阅 MySQL 文档。

2.4.3. 容器外访问和查看 MySQL 日志

docker exec 命令允许您在 Docker 容器内运行命令。 以下命令行将为您提供 mysql 容器内的 bash shell:

$ docker exec -it some-mysql bash

第一次启动一个MySQL容器后,需要对账户进行授权,否则无法远程访问,请先使用上面的命令进入容器内,然后使用以下命令连接到mysql服务:

mysql -uroot -p
# 输入密码回车,进入mysql命令界面
mysql> 

接着授权root远程访问权限:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

然后就可以远程用MySQL客户端连接到MySQL容器了。

日志可通过 Docker 的容器日志获得:

$ docker logs some-mysql
2.4.4. 使用自定义 MySQL 配置文件

MySQL 的默认配置可以在 /etc/mysql/my.cnf 中找到,其中可能包含额外的目录,例如 /etc/mysql/conf.d 或 /etc/mysql/mysql.conf.d。 请检查 mysql 映像本身中的相关文件和目录以获取更多详细信息。

如果 /my/custom/config-file.cnf 是你的自定义配置文件的路径和名称,你可以这样启动你的 mysql 容器(注意这个命令只使用了自定义配置文件的目录路径):

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

这将启动一个新容器 some-mysql,其中 MySQL 实例使用来自 /etc/mysql/my.cnf 和 /etc/mysql/conf.d/config-file.cnf 的组合启动设置,后者的设置优先 .

没有 cnf 文件的配置

许多配置选项可以作为标志传递给 mysqld。 这将使您可以灵活地自定义容器,而无需 cnf 文件。 例如,如果要将所有表的默认编码和排序规则更改为使用 UTF-8 (utf8mb4),只需运行以下命令:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

如果您想查看可用选项的完整列表,只需运行:

$ docker run -it --rm mysql:tag --verbose --help
2.4.5. 环境变量

启动 mysql 镜像时,可以通过在 docker run 命令行中传递一个或多个环境变量来调整 MySQL 实例的配置。 请注意,如果您使用已包含数据库的数据目录启动容器,则以下任何变量都不会产生任何影响:任何预先存在的数据库在容器启动时将始终保持不变。

另请参阅 https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html 以获取 MySQL 的环境变量的文档(尤其是 MYSQL_HOST 等变量,已知与此镜像一起使用时会导致问题)。

MYSQL_ROOT_PASSWORD

此变量是必需的,并指定将为 MySQL root 超级用户帐户设置的密码。 在上面的示例中,它被设置为 my-secret-pw。

MYSQL_DATABASE

此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。 如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于 GRANT ALL)。

MYSQL_USER、MYSQL_PASSWORD

这些变量是可选的,用于创建新用户和设置该用户的密码。 该用户将被授予对 MYSQL_DATABASE 变量指定的数据库的超级用户权限(见上文)。 要创建用户,这两个变量都是必需的。

请注意,不需要使用此机制来创建超级用户超级用户,默认情况下会使用 MYSQL_ROOT_PASSWORD 变量指定的密码创建该用户。

MYSQL_ALLOW_EMPTY_PASSWORD

这是一个可选变量。 设置为非空值,例如 yes,以允许使用 root 用户的空白密码启动容器。 注意:除非您真的知道自己在做什么,否则不建议将此变量设置为 yes,因为这将使您的 MySQL 实例完全不受保护,从而允许任何人获得完全的超级用户访问权限。

MYSQL_RANDOM_ROOT_PASSWORD

这是一个可选变量。 设置为非空值,如 yes,为 root 用户生成随机初始密码(使用 pwgen)。 生成的根密码将打印到标准输出(生成的根密码:…)。

MYSQL_ONETIME_PASSWORD

一旦初始化完成,将 root(不是 MYSQL_USER 中指定的用户!)用户设置为过期,强制在第一次登录时更改密码。 任何非空值都将激活此设置。 注意:此功能仅在 MySQL 5.6+ 上受支持。 在 MySQL 5.5 上使用此选项将在初始化期间引发适当的错误。

MYSQL_INITDB_SKIP_TZINFO

默认情况下,入口点脚本会自动加载 CONVERT_TZ() 函数所需的时区数据。 如果不需要,任何非空值都会禁用时区加载。

2.4.6. Docker Secrets

作为通过环境变量传递敏感信息的替代方法,_FILE 可以附加到先前列出的环境变量中,从而导致初始化脚本从容器中存在的文件中加载这些变量的值。 特别是,这可用于从存储在 /run/secrets/<secret_name> 文件中的 Docker 机密中加载密码。 例如:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag

目前,这仅支持 MYSQL_ROOT_PASSWORD、MYSQL_ROOT_HOST、MYSQL_DATABASE、MYSQL_USER和 MYSQL_PASSWORD。

2.4.7. 初始化一个新实例

首次启动容器时,将使用提供的配置变量创建并初始化具有指定名称的新数据库。 此外,它将执行 /docker-entrypoint-initdb.d 中的扩展名为 .sh、.sql 和 .sql.gz 的文件。 文件将按字母顺序执行。 您可以通过将 SQL 转储安装到该目录并提供带有贡献数据的自定义镜像来轻松填充您的 mysql 服务。 SQL 文件将默认导入到 MYSQL_DATABASE 变量指定的数据库中。

2.5. 注意事项

2.5.1. 在哪里存储数据

重要提示:有几种方法可以存储在 Docker 容器中运行的应用程序使用的数据。 我们鼓励 mysql 映像的用户熟悉可用的选项,包括:

  • 让 Docker 通过使用自己的内部卷管理将数据库文件写入主机系统上的磁盘来管理数据库数据的存储。 这是默认设置,对用户来说简单且相当透明。 缺点是对于直接在主机系统(即外部容器)上运行的工具和应用程序,可能很难找到这些文件。
  • 在主机系统(容器外部)上创建一个数据目录,并将其挂载到容器内部可见的目录。 这会将数据库文件放置在主机系统上的已知位置,并使主机系统上的工具和应用程序可以轻松访问这些文件。 缺点是用户需要确保目录存在,例如主机系统上的目录权限和其他安全机制设置正确。

Docker 文档是了解不同存储选项和变体的一个很好的起点,并且有多个博客和论坛帖子在该领域讨论和提供建议。 我们将在这里简单地展示上面后一个选项的基本过程:

  1. 在主机系统上的合适卷上创建数据目录,例如 /my/own/datadir。

  2. 像这样启动你的 mysql 容器:

    $ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    

命令的 -v /my/own/datadir:/var/lib/mysql 部分将底层主机系统中的 /my/own/datadir 目录挂载为容器内的 /var/lib/mysql ,默认情况下 MySQL 将 写入其数据文件。

2.5.2. 在 MySQL 初始化完成之前没有连接

如果容器启动时没有初始化数据库,则会创建一个默认数据库。 虽然这是预期的行为,但这意味着在初始化完成之前它不会接受传入的连接。 在使用同时启动多个容器的自动化工具(例如 docker-compose)时,这可能会导致问题。

如果您尝试连接到 MySQL 的应用程序没有处理 MySQL 停机时间或等待 MySQL 正常启动,那么在服务启动之前放置一个连接重试循环可能是必要的。 有关官方图像中此类实现的示例,请参阅 WordPress 或 Bonita。

2.5.3. 针对现有数据库的使用

如果您使用已经包含数据库的数据目录(特别是 mysql 子目录)启动 mysql 容器实例,则应该从运行命令行中省略 $MYSQL_ROOT_PASSWORD 变量; 在任何情况下都将被忽略,并且不会以任何方式更改预先存在的数据库。

2.5.4. 以任意用户身份运行

如果你知道你的目录的权限已经被适当地设置了(例如对一个现有的数据库运行,如上所述)或者你需要使用特定的 UID/GID 运行 mysqld,那么可以使用 --user 调用这个镜像设置为任何值(root/0 除外)以实现所需的访问/配置:

$ mkdir data
$ ls -lnd data
drwxr-xr-x 2 1000 1000 4096 Aug 27 15:54 data
$ docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
2.5.5. 创建数据库转储

大多数普通工具都可以工作,尽管在某些情况下它们的使用可能有点复杂,以确保它们可以访问 mysqld 服务器。 确保这一点的一种简单方法是使用 docker exec 并从同一容器运行该工具,类似于以下内容:

$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
2.5.6. 从转储文件恢复数据

用于恢复数据。 您可以使用带有 -i 标志的 docker exec 命令,类似于以下内容:

$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

备注

docker安装完MySQL,后面就是MySQL容器在跑,基本上就是当MySQL服务去操作,以前MySQL怎么做现在还是一样怎么做,只是个别操作因为docker包了一层,麻烦一点。
有需要的话,我们也可以基于MySQL官方镜像去定制我们自己的镜像,就比如主从镜像之类的。

docker安装部署Tomcat,MySQL docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql 644 运行安装。1:运行docker docker run -d -p 8080:8080 --name tomcat fa6。docker logs -f 551:查看日志 -f可以滚动查看 551为CONTAINER ID。docker load -i tomcat.img 导入镜像包。2:如何删除镜像包 docker ps -a 查看运行的镜像。 阅读详情

相关推荐

Docker下安装MySQL8与开启root远程访问

1.docker search mysql #查询mysql版本 2.docker pull mysql:8.0.15 #拉取mysql 3.创建mysql容器 docker stop mysql_8 docker rm mysql_8 docker run -d -e TZ=“Asia/Shanghai” -p 3306:3306 --name mysql_8 -e MYSQL_ROOT_PAS...

wzj的博客 1万+

MySQL 8.0.35数据库的下载安装以及环境变量的配置

记录数据库的下载安装方法,供初学者学习。

qq_74140417的博客 1万+

玩转Docker | 使用Docker部署MySQL数据库

玩转Docker | 使用Docker部署MySQL数据库

qq_59334230的博客 543

Docker安装MySQL8.0.35

Docker安装MySQL8.0.35;自定义配置文件

weixin_56672359的博客 876

OPC与AI智能体集成实战:一人公司的技术栈构建与避坑指南

1. 先搞清楚“一人公司”和“AI工具”到底在解决什么问题 最近看到不少关于“裸辞搞OPC一人公司”和“AI时代骗局”的讨论,结合搜索热词里高频出现的 openclaw 、 AI编程 、 OPC ,我觉得有必要把这里面的水搅一搅,说点实在的。 首先得拆开看。标题里混了三个东西: 一人公司 、 OPC/OpenClaw 、 AI培训 。它们被放在一起讨论“骗局”,但本质上解决的是不同层面的问题。 一人公司 ,或者说个人工作室、独立开发者模式,核心是 用最小化团队(甚至一个人)去承接项目、开发产品或提供服务 。

weixin_29038345的博客 320

爆改YOLOv8 | PSA注意力机制融合入YOLOv8

yolov8,PSA注意力,即插即用

weixin_43986124的博客 2497

docker部署MySQL服务

部署 MySQL8.0.35社区版。

weixin_51262054的博客 395

【CubeMX】STM32G474 HRTIM 死区时间与互补PWM实战解析

本文深入解析STM32G474的HRTIM高分辨率定时器在互补PWM生成与死区时间配置中的应用。通过CubeMX工具详细演示时钟配置、单路PWM基础、互补输出与死区时间设置,并结合逆变器等电力电子实战案例,帮助开发者避免直通风险,优化系统性能。

efc12345678的博客 746

docker容器运行mysql持久化_基于docker部署mysql的数据持久化问题

本人最近在使用docker部署mysql时,在持久化mysql数据时遇到了一个有趣的问题,将排查过程及思考记录在这里,以备后查。先简单描述下我遇到的问题:在mysql容器中创建了两个数据库,然后使用docker commit想要保存容器的修改为新的镜像,发现只保存下来了新建的一个数据库,而另一个并没有被保存下来。最终通过查看docker文档和自己的实验,发现是mysql镜像中指定了volume为m...

weixin_35301706的博客 331

VSCode下载、安装+C语言环境配置(超详细)

ps:我的更改部分:"D:/BaiduNetdiskDownload/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64。③ 找到【系统变量】中的【Path】变量 ---- 双击打开后,将刚刚复制的地址添加进去 ---- 点击【确定】;① 双击【此电脑】---- 点击【属性】---- 进入到下面这个界面,单击【高级系统设置】;② 进入到 系统属性界面 ---- 点击【环境变量】,进入环境变量页面;并进行安装,安装成功后,打开VSCode;

weixin_48820458的博客 1万+

IAR安装成功的关键:STM32设备支持文件导入方法

IAR安装常卡在设备支持缺失这一步——尤其对STM32新手,没导入对应芯片包,编译直接报错。实测发现,必须通过IAR的Tools→Options→IDE→Configuration→Device Support手动加载STM32设备支持文件,否则新建工程时连芯片型号都选不到。IAR安装是否顺利,往往就差这一步。

weixin_42527589的博客 680

如何在Docker中运行MySQL容器?

随着容器化技术的普及,Docker已成为开发和部署应用的首选工具之一。MySQL作为最流行的开源关系型数据库,也非常适合在Docker容器中运行。

weixin_43772292的博客 2166

巨量千川M-API实战:异步报表与批量操作自动化指南

API(应用程序编程接口)是现代软件系统间通信和数据交换的核心技术,它定义了服务间交互的协议和规范。在数字营销领域,营销API(Marketing API)通过程序化接口实现了广告账户管理、数据获取和操作自动化的能力,其技术价值在于将重复性人工操作转化为高效、准确的自动化流程,显著提升运营效率并降低人为错误。在广告投放精细化运营场景中,面对海量数据报表的获取与批量广告状态管理的需求,异步任务处理和批量操作接口成为关键技术解决方案。本文聚焦巨量千川M-API,深入解析其异步报表获取机制与批量操作实现,涵盖从任

weixin_32932149的博客 429

Docker创建Mysql容器

1、启动docker服务 [root@docker ~]# systemctl start docker 2、查看docker里面的镜像 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos/m...

成旭元的成长之旅 794

SDA 还是 SDI:SAP HANA 数据虚拟化与数据集成的取舍、组合与实战

结论先放在前面:SDA 面向数据虚拟化与联邦查询,强调不落地、不复制、按需实时访问;SDI 面向数据集成与复制,强调抽取、转换、装载与近实时增量同步。两者共享 Remote Source 与 Adapter 的理念,但侧重点与运行时组件明显不同。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 585

3、灵巧手的设计与构造

本文详细探讨了灵巧手的设计与构造,包括多指结构、关节和连杆设计、传感器集成以及分层控制架构等内容。同时,通过工业装配、医疗手术辅助和日常生活辅助等实际应用案例,展示了灵巧手的灵活性和适应性,并分析了当前设计面临的挑战及未来发展方向。

brandy的博客 490

docker 运行linux+apache+mysql +php 现成镜像启动容器部署wordPress

#下载镜像创建容器######## docker run -d -P -v /iswww/:/var/www/html mattrayner/lamp #登录容器 docker exec -it 容器名bash #mysql数据库设置######## #登录 mysql -u root #修改密码 update mysql.user set authentication_string=password('123456') where user='root'; #立即生效 flus..

255.255.255.0 769

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

部署在阿里云服务器上的docker上的mysql容器可以运行,mysql也可以在容器内登录,但是本地的sqlyog连接不上

部署在阿里云服务器上的docker上的mysql容器可以运行,mysql也可以在容器内登录,但是本地的sqlyog连接不上

ghddd123的博客 1939

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Docker 部署 MySQL 数据库

Docker 部署 MySQL 数据库

小强不是坑 976

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Docker 部署 MySQL 8 详细图文教程

本教程详细介绍了如何在 Docker 中部署 MySQL 8,配置远程连接权限,并提供了备份与恢复数据的方法。包含详细的命令示例与操作步骤,适合开发人员快速上手与管理 MySQL 容器。

有来技术 1万+

如何进入mysql的docker_MySQL如何在Docker环境下运行

1. Docker介绍1.1. docker是一种linux容器技术。容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求。每个容器内运行一个应用,不同的容器之间相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,资源需求远远低于虚拟机。优点:能高效地构建应用。能快速的交付和部署高效的资源利用轻松的迁移扩展简单的更新管理1.2. 容器的发...

weixin_39654245的博客 1227

mysql显示表已存在_「Docker系列」 如何在Docker中部署MySQL数据库?

Docker为部署和测试应用程序和数据库提供了许多优势,这些应用程序和数据库是应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库。本文中,我们会重点关注如下重点:为MySQL Docker容器创建Docker Compose YAML文件。使用各种方法连接到在容器上运行的MySQL数据库。在Docker容器中创建并运行多个MySQL版本。接下来,我们会逐一介绍这些。1...

weixin_39796533的博客 287

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

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

shelby_loo的博客 713

docker : 离线部署docker ,部署业务

背景: 有时候我们的软件部署环境是完全离线的,需要离线部署docker ,部署业务相关的软件,为了方便操作,提供一下脚本 脚本文件: #!/bin/bash # auto deploy icity system # offline install docker use rpm set -ex install_dir='/software_install' docker_rpm='/softwa...

feiger的专栏 1301

docker部署项目

docker部署的项目的详细教程

java龙王的博客 1885

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

Docker 是一个开源的容器化平台,让开发者能够轻松打包、分发和运行应用程序。它通过容器隔离应用和依赖,确保一致的运行环境。而 MySQL 是一个广泛使用的关系型数据库管理系统,以其高性能和可靠性而著称。结合 Docker 和 MySQL,开发者可以快速创建和管理数据库实例,简化开发和运维流程。

shelby_loo的博客 743
上一篇: SentinelDashboard-Nacos动态数据源-SpringCloudGateway
下一篇: 【MySQL5.7指南】第一章——概述
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值