📃个人主页: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 ./demo3.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.repo4. 容器资源更新
① 运行一个 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】的内容,请持续关注我 !!