news 2026/5/10 10:25:46

【Docker#8】容器实战演练

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Docker#8】容器实战演练

📃个人主页:island1314

⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞

  • 生活总是不会一帆风顺,前进的道路也不会永远一马平川,如何面对挫折影响人生走向 – 《人民日报》

🔥 目录

      • 1. Mysql容器化安装
        • 1.1 下载安装
        • 1.2 测试
      • 2. Redis安装
        • 2.1 Redis 简历
        • 2.2 实际操作
      • 3. C++容器的制作
        • 3.1 制作 Centos 镜像
        • 3.2 制作 Ubuntu 镜像
        • 3.3 一些问题
      • 4. 容器资源更新

1. Mysql容器化安装

1.1 下载安装

① 进入 mysql 的镜像网站(mysql docker hub 官网,),查找 mysql 的镜像,可以看到有这么多的 tag

② 选择使用最多的 5.7 版本,拉取镜像

dockerpull mysql:5.7

可以看到我们的 mysql 镜像,如下:

lighthouse@VM-8-10-ubuntu:~$dockerimages REPOSITORY TAG IMAGE ID CREATED SIZE mysql5.75107333e08a82years ago 501MB

③ 启动一个 MySQL 容器,并指定密码和端口开放

dockerrun --name mysql -eMYSQL_ROOT_PASSWORD=123-p8201:3306 -d mysql:5.7

这里指定的密码是:123456

参数作用说明
-e MYSQL_ROOT_PASSWORD=123设置环境变量,这是官方 MySQL 镜像要求的,用于初始化 root 密码
⚠️ 注意:密码为123太弱,仅用于测试
-p 8201:3306端口映射:将宿主机的8201端口 → 容器内的3306端口
-d后台运行(detached mode)

❓ 为什么容器内部端口是 3306?

这里的 3306 是 MySQL 官方默认的监听端口**,这是由MySQL 服务器程序本身约定的,不是 Docker 决定的。

具体原因:

  • MySQL 在设计时,默认配置文件(my.cnf)中指定port = 3306
  • 当 MySQL 启动时,会自动在这个端口上监听客户端连接;
  • 这是IANA(互联网编号分配机构)注册的官方端口,属于“公认端口”(Well-known port)范围(0~1023);
  • 几乎所有 MySQL 客户端(如mysql命令、JDBC、Navicat)默认连接 3306,除非显式指定其他端口。

📌 所以:3306 是 MySQL 的“行业标准端口”,就像:

  • HTTP → 80
  • HTTPS → 443
  • Redis → 6379

④ 容器创建好了之后,输入命令进行mysql的启动操作

lighthouse@VM-8-10-ubuntu:~$dockerrun --name mysql -eMYSQL_ROOT_PASSWORD=123-p8201:3306 -d mysql:5.7 69f6d1cf10352a5521f4cf3bc8c9ebca08f70843284d5d12c741e04c9b0d0176 lighthouse@VM-8-10-ubuntu:~$dockerexec-it mysqlbashbash-4.2# mysql -u root -pEnter password: Welcome to the MySQL monitor. Commands end with;or\g. Your MySQL connectionidis3Server version:5.7.44 MySQL Community Server(GPL)Copyright(c)2000,2023, Oracle and/or its affiliates. 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'forhelp. Type'\c'toclearthe current input statement. mysql>
1.2 测试

① 输入mysql命令查询当前的库数据

mysql>show databases;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||sys|+--------------------+4rowsinset(0.00sec)

② 查询Mysql版本

mysql>selectversion();+-----------+|version()|+-----------+|5.7.44|+-----------+1rowinset(0.00sec)

③ 创建数据库和表

create database test_db;

④ 使用数据库

use test_db;

⑤ 创建一个表并进行查看操作

create table test_user(name varchar(50),age int);show tables;

⑥ 进行数据的插入操作并进行数据查看

insert into test_user values('kaizi','99');select* from test_user;

同时:本地进行Mysql链接,链接正常


然后这里就能看到我们在服务器中创建的表了


运行查询操作

2. Redis安装

2.1 Redis 简历

Redis 出现的原因

  • 在 Web 应用发展的初期,关系型数据库受到了较为广泛的关注和应用,因为那时 Web 站点基本上访问和并发不高、交互也较少。
  • 随着访问量的提升,使用关系型数据库的 Web 站点在性能上出现了瓶颈,主要瓶颈在磁盘的I/O 上。
  • 随着互联网技术的进一步发展,对性能有了更高的需求,主要体现在低延迟的读写速度和支撑海量的数据和流量。

Redis 是什么

  • Redis 全称 Remote Dictionary Server,中文名为****远程字典服务器****。
  • Redis 是一个使用 ANSI C 编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。

Redis 的特性

  • 基于内存运行,性能高效
  • 支持分布式,理论上可以无限扩展
  • key-value 存储系统
  • 开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API

Redis 的应用场景

  • 缓存系统(“热点”数据:高频读、低频写)
  • 计数器
  • 消息队列系统
  • 实时排行榜
  • 社交网络

Redis 生活案例

  • Redis 就像一个新华字典,可以根据某个字符快速找到字典对应的字
2.2 实际操作

① 拉取redis容器镜像到本地

dockerpull redis:7.0


② 可以看到我们的redis容器

dockerimages

创建一个redis容器

dockerrun --name redis -d -p8090:6379 redis:7.0dockerps


我们的8090端口也映射到了容器的6379端口上了

③ 进入到容器中并且启动redis

dockerexec-it redisbashredis-cli

④ 进行操作测试

setsellcount1get sellcount


键值对存储操作,这里我们就链接成功了

3. C++容器的制作

3.1 制作 Centos 镜像

① 下载镜像

dockerpull centos:7

② 启动容器

dockerrun -it --name mycpp centos:7bash

③ 检查是否运行,打开另一个终端检查

dockerps

④ 更新缓存数据

yum clean all# 先清除所有旧的、可能已损坏的缓存数据yum makecache# 让系统根据新的配置文件重新生成缓存

⑤ 下载 gcc

yuminstallgcc

这样就下载好了

⑤ 创建一个文件进行文件的编译操作

[root@94b9ae1994cc /]# vi code.c[root@94b9ae1994cc /]# cat code.c#include<stdio.h>intmain(){printf("Hello Docker");return0;}

⑥ 编译运行

3.2 制作 Ubuntu 镜像

① 下载 Ubuntu 镜像

docker pull ubuntu:22.04

② 启动容器

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

③ 配置国内镜像源加速

sed-i's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g'/etc/apt/sources.list

④ 安装 gcc 和 vim

aptupdateapt install gcc vim-y

⑤ 编辑代码

mkdir src cd src vim demo.c

⑥ 编译代码,并且在容器中运行

gcc demo.c -o demo ./demo
3.3 一些问题

注意:在进行任何修改之前,先备份是一个好习惯。

mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

由于官方源已失效,需要使用归档(vault)源。执行以下命令下载新的配置文件。

curl-o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

如果你的环境中没有 curl,也可以尝试使用 wget:

wget-O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

4. 容器资源更新

① 运行一个 Nginx 容器

dockerrun -d --name mynginx -p8081:80 nginx:1.23.3

② 查看容器进程

dockertopmynginx aux

③ 查看资源动态变化

dockerstats# 输出lighthouse@VM-8-10-ubuntu:~$dockerstats mynginx CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS b517812ccc7c mynginx0.00%3.617MiB /3.32GiB0.11%1.08kB / 126B1.14MB /20.5kB3

④ 更新容器最大内存

dockerupdate -m 300m --memory-swap 600m mynginx

⑤ 执行命令打满 CPU

foriin`seq1$(cat /proc/cpuinfo|grep"physical id"|wc-l)`;doddif=/dev/zeroof=/dev/null&done

⑥ 配置只能使用 10% 的 CPU

dockerupdate --cpu-period=100000--cpu-quota=10000mynginx

⑦ 查看 CPU 使用情况

dockerstats

⑧ 停止容器,释放资源

dockerstop mynginxdockerrmmynginx

★,°:.☆( ̄▽ ̄)/$:.°★】那么本篇到此就结束啦,如果有不懂 和 发现问题的小伙伴可以在评论区说出来哦,同时我还会继续更新关于【Docker】的内容,请持续关注我 !!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 13:46:09

NVIDIA显卡优化实战指南:深度解锁隐藏性能

NVIDIA显卡优化实战指南&#xff1a;深度解锁隐藏性能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏卡顿而烦恼吗&#xff1f;想要彻底释放NVIDIA显卡的真正实力&#xff1f;今天我将分享一…

作者头像 李华
网站建设 2026/5/1 8:05:13

NCM音频转换终极指南:三步打造跨平台音乐库

NCM音频转换终极指南&#xff1a;三步打造跨平台音乐库 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 你是否厌倦了音乐格式的束缚&#xff1f;当从音乐平台下载的ncm格式音频文…

作者头像 李华
网站建设 2026/5/7 4:40:39

小熊猫Dev-C++深度配置手册:构建专业级C/C++开发环境

小熊猫Dev-C深度配置手册&#xff1a;构建专业级C/C开发环境 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 小熊猫Dev-C&#xff08;Red Panda Dev-C&#xff09;是基于经典Dev-C优化而来的现代化C/C集成…

作者头像 李华
网站建设 2026/5/8 2:37:22

一文说清IDA Pro在固件逆向中的核心要点

从零开始搞懂 IDA Pro&#xff1a;固件逆向实战全解析你有没有遇到过这种情况——手头拿到一个路由器、摄像头或者智能插座的固件&#xff0c;想看看里面有没有安全漏洞&#xff0c;结果打开一看全是十六进制和跳转指令&#xff1f;没有符号表、没有函数名&#xff0c;甚至连入…

作者头像 李华
网站建设 2026/5/8 1:03:34

3分钟解锁Unity游戏翻译神器:让全球游戏秒变中文版

3分钟解锁Unity游戏翻译神器&#xff1a;让全球游戏秒变中文版 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的外语游戏发愁吗&#xff1f;XUnity.AutoTranslator这款开源插件能帮你瞬间突…

作者头像 李华
网站建设 2026/5/4 22:43:02

炉石传说HsMod完全攻略:55项隐藏功能大揭秘

还在为炉石传说的繁琐操作和漫长等待而烦恼吗&#xff1f;HsMod插件正是你需要的终极解决方案&#xff01;这款基于BepInEx框架的开源插件&#xff0c;为炉石传说注入了55项强大功能&#xff0c;从游戏加速到个性化定制&#xff0c;全方位提升你的游戏体验。更重要的是&#xf…

作者头像 李华