热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Docker容器化开发流程(四)制作mysql镜像

文章目录目标使用mysql镜像文件测试将mysql镜像提交到仓库其他命令特别注意目标了解使用mysql镜像参考:[如何通过Docker快速搭建测试环境?


文章目录

    • 目标
    • 使用mysql镜像文件
    • 测试
    • 将mysql镜像提交到仓库
    • 其他命令
    • 特别注意


目标


  • 了解使用mysql镜像

    参考:[如何通过Docker快速搭建测试环境?](https://www.cnblogs.com/hg-super-man/p/10908216.html)

    Docker 安装 MySQL

    如何修改 docker 容器中 mysql 的端口号

    更改docker下的mysql容器的配置文件

    linux下使用docker创建并进入mysql的容器

    在Docker中安装JDK


使用mysql镜像文件

# 使用 docker pull 下载镜像 https://hub.docker.com/_/mysql?tab=tags
$ docker pull mysql:5.7
# 查看镜像
$ $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 413be204e9c3 6 days ago 456MB# 运行mysql容器
$ docker run -itd --name mysql-server1 -p 3307:3307 -e MYSQL_ROOT_PASSWORD=111 mysql:5.7-p 3307:3307 :映射容器服务的 3307 端口到宿主机的 3307 端口,外部主机可以直接通过 宿主机ip:3307 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=111:设置 MySQL 服务 root 用户的密码。# 使用 docker ps 查看现在运行的容器信息
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15c50777c383 mysql:5.7 "docker-entrypoint.s…" 5 seconds ago Up 3 seconds 3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp mysql-server1# 将容器中的目录文件复制到宿主机中
mysql 配置文件;
数据存储目录,以便挂载(PS: 若不挂载到宿主机,容器万一被删除掉了,数据都会丢失)
mysql 的日志logs# 将容器中的 mysql 配置文件复制到宿主机中指定路径下,路径你可以根据需要,自行修改
$ mkdir -p /usr/local/docker/mysql/config
$ docker cp mysql-server1:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/docker/mysql/config
# 将容器中的 mysql 存储目录复制到宿主机中
$ mkdir -p /usr/local/docker/mysql/data
$ docker cp mysql-server1:/var/lib/mysql/ /usr/local/docker/mysql/data# 将容器中的 mysql log复制到宿主机中
$ mkdir -p /usr/local/docker/mysql/logs
$ docker cp mysql-server1:/logs /usr/local/docker/mysql/logs# 将刚才的容器删除 PS: mysql-server 是我们运行容器时,指定的名称,当然,你也可以先执行 docker ps, 通过容器 ID 来删除。
$ docker rm -f mysql-server1# 修改mysql 配置
$ vi /usr/local/docker/mysql/config/mysqld.cnf
# 修改端口号 设置在 mysqld 项目下新增 port=3307 配置
[mysqld]
port=3307# 重新运行mysql 容器
$ docker run -itd --name mysql-server1 -p 3307:3307 -v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /usr/local/docker/mysql/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=111 mysql:5.7其他不变,额外添加了两个挂载子命令:-v/usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf: 将容器中 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件挂载到宿主机的 /usr/local/docker/mysql/config/mysqld.cnf 文件上;-v/usr/local/docker/mysql/data:/var/lib/mysql: 将容器中 /var/lib/mysql 数据目录挂载到宿主机的 /usr/local/docker/mysql/data 目录下;-d: 后台运行容器
-p 将容器的端口映射到本机的端口
-v 将主机目录挂载到容器的目录
-e 设置参数# 检查容器是否启动
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15c50777c383 mysql:5.7 "docker-entrypoint.s…" 5 seconds ago Up 3 seconds 3306/tcp, 33060/tcp, 0.0.0.0:3307->3307/tcp mysql-server1# mysql容器运行时,进入mysql
$ docker exec -it mysql-server1 bash
或者
docker exec -it 容器ID /bin/bash# 如果修改配置文件
$ vim /etc/mysql/mysql.conf.d/mysqld.cnf# 保存后,重新启动mysql容器
$ docker restart mysql-server1
或者 docker restart 容器id# 进入mysql 容器的命令行
$ docker exec -it mysql-server1 bash
# 连接mysql
$ mysql -uroot -p
剩下的操作,就是mysql 提供的语法了# 退出容器,不关闭容器
ctrl+p+q例子 : root@15c50777c383:/# mysql -uroot -p111

测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9jlYn8dY-1586687431401)(index_files/1586661841314_4.png)]


将mysql镜像提交到仓库

由于私人仓库还没有建立,先提交至docker hub

# 修改标签
$ docker tag mysql:5.7 1164014750/mysql:5.7
# 提交
$ docker push 1164014750/mysql:5.7
# 就可以在dock hub 中搜索了
https://hub.docker.com/repository/docker/1164014750/mysql# pull
docker push 1164014750/mysql:5.7

其他命令

# 容器外访问mysql容器
$ docker exec -it mysql-server1(容器id或者容器名称) bash
# 查看MySQL日志
$ docker logs 容器id或者容器名称# 使用自定义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:5.7# 不使用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

特别注意

参考:Docker官方映像(https://hub.docker.com/_/mysql?tab=description)

# 数据存储位置,我们在宿主机目录创建一个存放mysql数据目录,并将这个目录挂载到容器中,如果不挂载,容器丢失,之前的数据将丢失
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将在该目录中写入其数据文件。# 创建数据库转储到sql文件
大多数普通工具都可以使用,尽管在某些情况下它们的使用可能会有些麻烦,以确保它们可以访问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# 从sql文件还原数据
用于还原数据。您可以使用docker exec带-i标志的命令&#xff0c;类似于以下内容&#xff1a;$ docker exec -i some-mysql sh -c &#39;exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"&#39; < /some/path/on/your/host/all-databases.sql

推荐阅读
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • ESP32 IRAM 内存优化策略与实践总结
    本文总结了针对ESP32 IRAM内存溢出问题的优化策略与实践经验。通过详细分析ESP32的内存结构和IRAM分配机制,提出了一系列有效的解决方案,包括代码优化、内存管理技巧和编译器配置调整,旨在帮助开发者有效解决`.espressif/tools/xtensa-esp32-elf/esp-2`等类似错误,提升系统性能和稳定性。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 在2020年8月19日的深度分析中,我们探讨了HTML标签中同时存在`a`标签的`href`和`onclick`属性时的触发顺序问题。此外,还讨论了如何在一个自适应高度的父级`div`中,使两个子`div`中的一个固定高度为300px,另一个自动填充剩余空间的方法。最后,文章详细介绍了JavaScript异步加载的多种实现方式,包括但不限于`async`、`defer`属性以及动态脚本插入技术,为开发者提供了丰富的技术参考。 ... [详细]
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
author-avatar
PHPYeQ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有