目录
[一:Mysql 容器化安装](#一:Mysql 容器化安装)
[二:Redis 容器化安装](#二:Redis 容器化安装)
[Redis 简介](#Redis 简介)
[Redis 容器创建](#Redis 容器创建)
一:Mysql 容器化安装
进入 mysql 的镜像网站,查找 mysql 的镜像
mysql docker hub 官网,可以看到有这么多的 tag
选择使用最多的 5.7 版本,拉取镜像
docker pull mysql:5.7
启动一个 MySQL 容器,并指定密码和端口开放
docker run --name mysql -e MYSQL_ROOT_PASSWORD=maxhouroot -p 8200:3306 -d mysql:5.7
进入容器登录,验证 MySQL 是否正常运行
如果对外开放了 3877 端口,可以通过 GUI 工具远程登录到界面上
- 例如使用 MySQL Workbench 连接。
释放空间
docker stop mysql
docker rm mysql
二:Redis 容器化安装
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 就像一个新华字典,可以根据某个字符快速找到字典对应的字。
Redis 容器创建
拉取 Redis 镜像
docker pull redis
启动 Redis 容器
docker run --name redis -p 6379:6379 -d redis
进入 Redis 容器并验证
exec -it redis redis-cli
127.0.0.1:6379> ping
PONG
操作可视化:
用到的是 Another Redis Desktop Manager
释放空间
docker stop redis
docker rm redis
通过以上步骤,可以成功地将 MySQL 和 Redis 容器化,并进行基本的操作和验证
三:C++容器制作
下载 Ubuntu 镜像
docker pull ubuntu:22.04
启动容器
docker run --name mygcc -it ubuntu:22.04 bash
配置国内镜像源加速
sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
安装 gcc 和 vim
apt update
apt install gcc vim -y
编辑代码
mkdir src
cd src
vim demo.c
输入以下内容:
#include <stdio.h>
int main() {
printf("hello docker!\n");
return 0;
}
编译代码
gcc demo.c -o demo
在容器中运行
./demo
退出容器
exit
恢复容器
docker restart mygcc
清理容器释放空间
docker stop mygcc
docker rm mygcc
四:容器资源更新
运行一个 Nginx 容器
docker run -d --name mynginx5 -p 80:80 nginx:1.22.1
查看容器中的进程
docker top mynginx5 aux
查看资源的动态变化
docker stats
更新容器的最大内存
docker update -m 300m --memory-swap 600m mynginx5
执行命令打满 CPU
for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
配置只能使用 10% 的 CPU
docker update --cpu-period=100000 --cpu-quota=10000 mynginx5
查看 CPU 使用情况
docker stats
停止容器,释放资源
docker stop mynginx5
docker rm mynginx5
常见问题
docker create
、docker start
和docker run
有什么区别?
docker create
:从 Docker 镜像创建一个全新的容器,但不会立即运行。docker start
:启动任何已停止的容器。如果使用docker create
,可以使用此命令启动。- docker run**:(=create+start)**创建并立即启动一个新的容器。如果在系统上找不到所需镜像,会从 Docker Hub 中拉取。
docker import
和docker load
有什么区别?
docker save
:将一个镜像导出为文件,使用docker load
导入为镜像,保存所有历史记录。(迁移时建议使用这个)docker export
:将一个容器导出为文件,使用docker import
导入为新的镜像,丢失所有元数据和历史记录。
docker rm
、docker rmi
和docker prune
的差异?
docker rm
:删除一个或多个容器。docker rmi
:删除一个或多个镜像。docker
prune:删除不再使用的 Docker 对象。