分钟闪电部署MySQL/Redis+精准控资源+国内镜像狂飙加速+C环境秒配+Docker容器命令常见问题分析,一键解锁全流程黑科技!

分钟闪电部署MySQL/Redis+精准控资源+国内镜像狂飙加速+C环境秒配+Docker容器命令常见问题分析,一键解锁全流程黑科技!

文章目录

在这里插入图片描述

本篇摘要

本文实操MySQL/Redis容器安装测试及远程连接,介绍国内镜像源(中科大/清华)加速下载,演示CentOS容器替换源编译C程序,详解Docker内存/CPU资源控制(docker update限300MB/10%),辨析create/start/runsave/loadexport/importrm/rmi/prune等命令区别,最后通过复合命令docker kill $(docker ps -q)实现批量停容器,覆盖容器全流程操作与常见问题。

一.MySQL容器安装及测试使用

msyql安装

在这里插入图片描述

msyql启动测试

测试:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
  • 成功启动。

下面在容器中执行bash命令进行连接mysql:

在这里插入图片描述


在这里插入图片描述
  • 在mysql容器内部连接mysql(此时容器内部可以看到msyql这个服务)。
在这里插入图片描述


在这里插入图片描述
  • 进行一系列操作也是正常的。
在这里插入图片描述
  • 退出mysql容器。

远程连接mysql

windows安转MySQL workbench进行连接:

在这里插入图片描述


在这里插入图片描述
  • 进入后看到的数据也是一样的。

二.Redis容器安装及测试使用

Redis容器安装

从dockerhub中找到对应版本:

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
  • 下载完成,看到容器成功运行。

Redis启动测试

在这里插入图片描述
  • 进入容器内,进行连接里面的redis。
在这里插入图片描述
  • 发现能够正常操作。
在这里插入图片描述
  • 退出redis客户端与redis容器。

远程连接Redis

首先下载远程连接软件: 远程连接软件链接

在这里插入图片描述

进行启动:

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
  • 发现数据正常。

三.镜像源介绍及国内镜像源站点

1. 镜像源是什么?

想象你要下载一个超大的C++开发工具包(比如编译器、第三方库),官方源在国外,下载速度慢如蜗牛。镜像源就是国内(比如阿里、腾讯,清华源,中科大源)帮你“复印”了一份官方资源,内容和原版完全一样,但服务器离你更近,下载快得多!

2. 为什么需要镜像源?
  • 下载提速:比如从官方源下GCC编译器要半小时,换成国内镜像源可能1分钟搞定。
  • 避免卡死:官方源若网络拥堵或宕机,镜像源多节点备份,下载更稳定。
  • 公司/学校内网:内部搭建镜像源,全团队共用,不用每个人都重复下载相同的库(比如OpenCV、Boost)。
中科大源

跳转链接

来到首页:

在这里插入图片描述

可以更具帮助手册进行下载,比如对应ubuntu下的镜像源更换:

在这里插入图片描述
  • 这里只需要几行命令即可完成替换源。
清华源

跳转链接

在这里插入图片描述
在这里插入图片描述
  • 这里需要手动更改对应文件内容。

四.C++容器制作

在对应的centos 7的容器中进行安装gcc进行c程序编写测试;如果容器中暗账gcc,需要往国外去下载对应的gcc的镜像源,十分慢,因此这里可以把对应的centos7 的国外镜像源全部替换掉(这里选用中科大镜像源)

启动centos 7 进入bash中:

在这里插入图片描述

下面给centos7进行替换镜像源:

在这里插入图片描述

输入对指令,然后再刷新下:

在这里插入图片描述


在这里插入图片描述
  • 也是能跑起来。

五.docker资源控制

内存资源控制

首先跑一个nginx容器:

在这里插入图片描述

看下内存信息与cpu信息:

在这里插入图片描述

stats看下资源动态变化:

在这里插入图片描述
在这里插入图片描述
  • docker update:改运行中容器配置的命令。
  • -m 300m:给容器设内存上限300MB。
  • --memory-swap 600m:容器内存+交换空间上限600MB。
  • nginx2:要改的容器名。
  • 最后nginx2:显示已更新这个容器。
在这里插入图片描述
  • 把对应nginx容器内存最大限制在300m。

cpu资源控制

在容器中执行对应打满cpu命令:

在这里插入图片描述
  1. docker exec -it nginx2 bash:进入名为nginx2的Docker容器,启动交互终端。
  2. for i in \seq 1 $(cat /proc/cpuinfo |grep “physical id” |wc -l)``:根据容器里物理CPU数量循环。
  3. dd if=/dev/zero of=/dev/null &:每个循环启动一个后台任务,用dd命令消耗CPU资源(读/dev/zero/dev/null)。
  4. [1] 44等:显示后台任务编号和进程ID,说明已启动对应数量任务。
在这里插入图片描述
  • 这里发现对应的容器的cpu确实占到了接近100%。

下面给它使用cpu限制在10%:

在这里插入图片描述


在这里插入图片描述
  • 果然被限制在了10%。
在这里插入图片描述
  • 进行资源释放,删除容器。

六. docker容器常见问题

1. docker create start run 区别

  1. docker create:从 Docker 映像创建新容器,但不会立即运行。
  2. docker start:启动已停止的容器,可用于启动由 docker create 创建的容器。
  3. docker run:创建新容器并立即启动;若本地无指定映像,可从 Docker Hub 提取。

2.docker export importdocker save load区别

  1. docker save images_name
  • 作用:把指定的 Docker 镜像导出成一个文件(本质是保存镜像的完整快照,包含镜像的所有层级、历史记录、元数据等)。
  • 特点:导出的文件体积相对较大,因为它保留了镜像从基础层到当前层的所有信息。后续用 docker load 导入时,能完整还原镜像的历史记录与元数据。
  1. docker export container_id
  • 作用:把运行中的(或已停止的)Docker 容器导出成一个文件(仅保存容器某一时刻的状态,比如容器内的文件系统、进程状态等,但不会保存容器的“构建历史”“镜像元数据”这类和镜像生命周期强相关的信息)。
  • 特点:导出的文件体积通常更小,因为它只聚焦于容器当下的“快照”,丢弃了镜像层面的历史记录与元数据。后续用 docker import 导入时,会把这个容器快照当作新的镜像来构建。
  1. docker load
  • 用途:专门用来导入 docker save 导出的镜像存储文件(格式一般是 .tar 之类的归档文件)。
  • 行为:导入后,本地镜像库会新增一个和原镜像几乎完全一致的镜像——包括镜像的历史构建步骤、各层依赖关系、元数据(比如镜像作者、创建时间等)。可以理解为“把之前备份的完整镜像又放回了本地 Docker 环境”。
  1. docker import
  • 用途:专门用来导入 docker export 导出的容器快照文件(同样是归档文件,但内容是容器运行时的状态)。
  • 行为:导入时,Docker 会把这个“容器快照”当作全新的镜像源来处理,生成一个新的镜像。但这个新镜像没有原始容器的历史记录(比如它是怎么一步步构建出来的、之前经历过哪些镜像层变更),也没有原镜像的元数据;它只包含容器导出瞬间的文件系统状态。

差异总结:

  1. 导入的“源文件”不同
  • docker load 导入的是 docker save 导出的镜像级备份
  • docker import 导入的是 docker export 导出的容器级快照
  1. 历史记录与元数据的保留
  • docker load 导入后,新镜像和原镜像的历史记录、元数据完全一致
  • docker import 导入后,新镜像丢弃了容器的历史记录与元数据,仅保留容器导出时的“瞬时状态”。
  1. 文件体积与内容侧重点
  • docker load 对应的源文件(docker save 产出)体积更大,因为它存了镜像全生命周期的信息;
  • docker import 对应的源文件(docker export 产出)体积更小,因为它只存容器某一时刻的“快照”。
  1. 使用场景的差异
  • 如果希望完整还原一个镜像(包括它的构建历史、所有层依赖),比如从生产环境备份镜像再恢复到测试环境,用 docker save + docker load 更合适;
  • 如果只是想把某个容器的当前状态“固化”成一个新镜像(不在乎它之前的构建过程,只想要当下容器里的文件系统),比如把运行中的数据库容器状态存成镜像以便后续快速部署相同状态的容器,用 docker export + docker import 更轻便。

简单来说,你可以把 docker load 想象成“完整镜像的克隆机”——连历史和元数据都一模一样;把 docker import 想象成“容器快照的定格器”——只抓当下状态,抛掉历史包袱。根据你对“镜像完整性”和“文件体积”的需求,选择对应的命令组合即可。

3. docker rm rmi prune 区别

1. docker rm

  • 作用:删容器
  • 场景:容器不用了,删掉它(比如测试完的临时容器)
  • 注意:运行的容器删不了,除非加 -f 强制删

2. docker rmi

  • 作用:删镜像
  • 场景:镜像没用了,删掉省空间(比如旧版本测试镜像)
  • 注意:有容器在用这个镜像的话,一般删不掉

3. docker prune

  • 作用:删“没人用的”Docker 对象(容器、镜像、网络、卷等都能 prun e)
  • 场景:批量清理垃圾,比如删所有停止的容器、悬空镜像
  • 注意:会把符合条件的“闲置资源”全删掉,用前确认好

一句话总结: rm 管容器删除,rmi 管镜像删除,prune 批量清闲置对象。

4. docker中复合命令的使用

下面举个例子(如下图):

  • docker ps -qdocker ps 命令用于列出正在运行的容器,-q 选项表示只显示容器的 ID,而不显示其他详细信息(如容器名称、镜像等)。
  • $(...):这是命令替换语法。它会先执行括号内的命令(即 docker ps -q),然后将命令的输出结果作为参数传递给外部命令。
  • docker kill:该命令用于强制停止一个或多个正在运行的容器。它会向容器内的主进程发送 SIGKILL 信号,使得容器立即停止运行。
  • 整体 docker kill $(docker ps -q):这条复合命令的作用是获取当前所有正在运行的容器的 ID,并使用 docker kill 命令将这些容器全部强制停止。

总之,这样配合使用,变样式支持了原本docker不存在的命令,减少了许多重复命令使用。

七.本篇小结

本篇文章从数据库容器部署(MySQL/Redis)、镜像源加速、C++开发环境配置到资源管控(内存/CPU限制),系统讲解Docker基础操作;对比核心命令(如create/runsave/exportrm/prune)差异,辅以复合命令(批量停容器)实战,助读者掌握Docker从安装到优化的完整流程。