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


