跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Docker 容器实战:MySQL、Redis 部署与资源管理

Docker 容器实战教程,涵盖 MySQL 和 Redis 的镜像拉取、容器运行及端口映射配置,演示了如何在 Ubuntu 容器中编译 C++ 程序,并展示了使用 docker stats 和 update 命令监控及更新容器 CPU 和内存资源限制的方法。

leon发布于 2026/3/15更新于 2026/10/24113 浏览
Docker 容器实战:MySQL、Redis 部署与资源管理

MySQL 容器化安装

我们可以先在 Docker Hub 上查看对应的 MySQL 镜像,拉取对应的镜像:

拉取 mysql5.7 版本的镜像:

docker pull mysql:5.7

运行容器,并设置密码和端口映射:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 8090:3306 -d mysql:5.7

使用以下命令查看容器是否在运行:

docker ps 

进入容器的端口界面:

docker exec -it mysql bash 

然后登录上 MySQL:

bash-4.2# mysql -p 

看一下数据库列表:

在这里插入图片描述

还可以通过 Workbench 软件远程访问到 MySQL 容器:

在这里插入图片描述

设置好映射端口和主机 IP 后,输入密码就能远程访问:

在这里插入图片描述

输入 show databases 进行查看:

在这里插入图片描述

docker stop mysql
docker rm mysql 

释放空间。

注意事项: 端口映射:如果需要从主机访问 MySQL 服务,可以在创建容器时使用-p 参数映射端口。 数据持久化:为了保证数据不丢失,可以使用-v 参数挂载数据目录到主机。 安全性:不要在生产环境中使用默认的 root 密码和端口,以及不要将敏感信息暴露在环境中。

Redis 容器化安装

在 Docker Hub 上搜索 Redis 镜像,可以使用以下命令:

docker search redis 

拉取 redis7.0 版本的镜像:

docker pull redis:7.0

运行容器 redis,并设置端口映射:

docker run --name redis -p 8089:6379 -d redis:7.0

进入 redis 容器运行界面,并运行 redis:

root@VM-8-12-ubuntu:~# docker exec -it redis bash
root@545e7a6a42ec:/data# redis-cli 

设置一个 key:

在这里插入图片描述

也可以通过软件 Redis Desktop Manager 远程访问 Redis 容器:

释放空间:

docker stop redis
docker rm redis 

注意事项: 安全性:不要在生产环境中使用默认的密码和端口,以及不要将敏感信息暴露在环境中。可以通过修改 redis.conf 配置文件来设置密码和其他安全选项。 资源限制:根据实际需求为 Redis 容器分配适当的 CPU、内存和磁盘资源。可以使用 Docker 的–cpus、–memory 和–storage-opt 等参数来限制容器的资源使用。 备份与恢复:定期备份 Redis 数据,并测试恢复过程以确保数据的安全性和可恢复性。

C++ 容器简单制作

拉取一个 ubuntu22.04 的镜像:

docker pull ubuntu:22.04

运行 ubuntu 容器:

docker run --name mygcc -it ubuntu:22.04 bash 

在 ubuntu 镜像中下载 vim:

apt update
apt install gcc vim -y 

然后编辑一个 demo.c C 文件:

#include<stdio.h>
int main(){
    printf("hello docker!\n");
    return 0;
}

编译代码并生成可执行程序:

gcc -o demo demo.c 

在这里插入图片描述

退出并删除 mygcc 容器:

exit
docker rm mygcc 

容器资源更新

运行容器 mynginx,映射端口为 8080,后台运行:

docker run -d --name mynginx1 -p 8080:80 nginx:1.23.4

对于命令 docker top 加上 aux 就能查看 cpu 和内存资源:

在这里插入图片描述

也可通过指令 docker stats 来实时查看不断追踪资源使用情况:

docker stats 

在这里插入图片描述

通过资源更新将内存上限调为 300m:

docker update -m 300m --memory-swap 600m mynginx1 

查看资源使用情况可以看到内存上限变为 300m:

在这里插入图片描述

进入 mynginx1 运行端口:

docker exec -it mynginx1 bash 

我们在容器中执行一个命令,打满 cpu:

for i in `seq 1 $(cat /proc/cpuinfo | grep "physical id"|wc -l)`;do dd if=/dev/zero of=/dev/null & done 

cat /proc/cpuinfo |grep 'physical id' | wc -l 可以获得 CPU 的个数,我们将其表示为 N

seq 1 N 用来生成 1 到 N 之间的数字,通过 for 循环 不断执行命令 1-N;

for i in seq 1 N; 就是循环执行命令,从 1 到 N

dd if=/dev/zero of=/dev/null 执行 dd 命令,输出到/dev/null,实际上只占用 CPU,没有 IO 操作

由于连续执行 N(是 CPU 个数) 的 dd 命令,且使用率为 100%,这时调度器会调度每个 dd 命令在不同的 CPU 上处理,最终就实现所有 CPU 占用率 100%

更新容器 mynginx1 的 cpu 上限为 10%:

docker update --cpu-period=100000 --cpu-quota=10000 mynginx1 

在这里插入图片描述

停止运行的容器,并释放资源:

docker stop mynginx1
docker rm mynginx1 

目录

  1. MySQL 容器化安装
  2. Redis 容器化安装
  3. C++ 容器简单制作
  4. 容器资源更新
  5. cat /proc/cpuinfo |grep “physical id” | wc -l 可以获得 CPU 的个数,我们将其表示为 N
  6. seq 1 N 用来生成 1 到 N 之间的数字,通过 for 循环 不断执行命令 1-N;
  7. for i in seq 1 N; 就是循环执行命令,从 1 到 N
  8. dd if=/dev/zero of=/dev/null 执行 dd 命令,输出到/dev/null,实际上只占用 CPU,没有 IO 操作
  9. 由于连续执行 N(是 CPU 个数) 的 dd 命令,且使用率为 100%,这时调度器会调度每个 dd 命令在不同的 CPU 上处理,最终就实现所有 CPU 占用率 100%

更多推荐文章

查看全部
  • Apache IoTDB 实战:FILL 空值填充与 LIMIT/SLIMIT 分页查询
  • AI 大模型微调产品经理核心面试题与回答指南
  • C++离线语音识别(ASR)性能优化实战:从算法选型到工程落地
  • 基于 Qwen2.5-1.5B 的本地化 AI 写作助手搭建
  • 网络安全领域主流认证体系解析与选择指南
  • Python 11 种常用编译器与解释器介绍
  • Kali Linux 2025.4 正式发布:告别 X11、Wayland 全适配、工具与镜像升级
  • Llama-2-7b 在昇腾 NPU 上的六大核心场景性能基准
  • 基于遗传算法与 RBF 神经网络的无人机故障容错控制仿真
  • Spring 配置类与注解方式详解
  • Pygame 游戏开发完整流程与实战解析
  • 计算机视觉高级应用与前沿技术发展
  • 基于 Microi 吾码低代码框架构建 Vue 高效应用
  • 为什么 Java Lambda 和匿名内部类不能修改外部变量?final 与等效 final 解析
  • 网络安全从业人员画像调研:年龄、地域与职业特质分析
  • GitHub Copilot 学生认证指南:免费获取 Pro 版权限
  • M2LOrder 服务优化:API 响应压缩与 WebUI 资源懒加载
  • Ollama 模型管理与删除指南及 Open-WebUI 部署实战
  • 利用 Higress 将 REST API 快速转换为 MCP Server
  • Windows 系统升级后无法删除 Windows.old?TrustedInstaller 权限获取指南

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online