Docker--Docker Container(容器) 之容器实战

对docker容器的前两篇文章
Docker--Docker Container(容器) 之 操作实例
Docker--Docker Container(容器)

Mysql容器化安装

我们可以先在Docker Hub上查看对应的Mysql镜像,拉取对应的镜像:

拉取mysql5.7版本的镜像:

cpp 复制代码
docker pull mysql:5.7

运行容器,并设置密码和端口映射:

cpp 复制代码
docker run --name mysql -e MYSQL_R00T_PASSW0RD=123456 -p 8090:3306 -d mysql:5.7

使用以下命令查看容器是否在运行:

cpp 复制代码
docker ps

进入容器的端口界面:

cpp 复制代码
docker exec -it mysql bash

然后登录上Mysql:

cpp 复制代码
bash-4.2# mysql -p

看一下数据库列表:

还可以通过workbench软件远程访问到mysql容器:

设置好映射端口和主机ip后,输入密码就能远程访问;

输入show databases 进行查看:

cpp 复制代码
docker stop mysql
docker rm mysql

释放空间

注意事项:

端口映射:如果需要从主机访问MySQL服务,可以在创建容器时使用-p参数映射端口。

数据持久化:为了保证数据不丢失,可以使用-v参数挂载数据目录到主机。

安全性:不要在生产环境中使用默认的root密码和端口,以及不要将敏感信息暴露在环境中。

Redis容器化安装

在Docker Hub上搜索Redis镜像,可以使用以下命令:

cpp 复制代码
docker search redis

拉取redis7.0版本的镜像:

cpp 复制代码
docker pult redis:7.0

运行容器redis,并设置端口映射:

cpp 复制代码
docker run --name redis -p 8089:6379 -d redis:7.0

进入redis容器运行界面,并运行redis :

cpp 复制代码
root@VM-8-12-ubuntu:~# docker exec -it redis bash 
root@545e7a6a42ec:/data# redis-cli

设置一个key:

也可以通过软件Redis Desktop Manager 远程访问Redis容器:

释放空间:

cpp 复制代码
docker stop redis
docker rm redis

注意事项:

  • 安全性:不要在生产环境中使用默认的密码和端口,以及不要将敏感信息暴露在环境中。可以通过修改redis.conf配置文件来设置密码和其他安全选项。
  • 资源限制:根据实际需求为Redis容器分配适当的CPU、内存和磁盘资源。可以使用Docker的--cpus、--memory和--storage-opt等参数来限制容器的资源使用。
  • 备份与恢复:定期备份Redis数据,并测试恢复过程以确保数据的安全性和可恢复性

C++容器简单制作

拉取一个ubuntu22.04的镜像:

cpp 复制代码
docker pull ubuntu:22.04

运行ubuntu容器:

cpp 复制代码
docker run --name mygcc -it ubuntu:22.04 bash

在ubuntu镜像中下载vim:

cpp 复制代码
apt update
apt install gcc vim -y

然后编辑一个demo.c C文件

cpp 复制代码
#include <stdio.h>
int main()
{
printf("hello docker!\n");
return 0;
}

编译代码并生成可执行程序

cpp 复制代码
gcc -o demo demo.c

退出并删除mygcc容器 :

cpp 复制代码
exit
docker rm mygcc

容器资源更新

运行容器mynginx,映射端口为8080 ,后台运行 :

cpp 复制代码
docker run -d --name mynginx1 -p 8080:80 nginx:1.23.4

对于命令 docker top 加上 aux 就能查看cpu和内存资源:

也可通过指令docker stats 来实时查看不断追踪资源使用情况:

cpp 复制代码
docker stats

通过资源更新将内存上限调为300m :

cpp 复制代码
docker update -m 300m --memory-swap 600m mynginx1

查看资源使用情况可以看到内存上限变为300m :

进入mynginx1运行端口 :

cpp 复制代码
docker exec -it mynginx1 bash

我们在容器中执行一个命令,打满 cpu:

cpp 复制代码
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个(N是 CPU 个数)的 dd 命令, 且使用率为 100%, 这时调度器

会调度每个 dd 命令在不同的 CPU 上处理,最终就实现所有CPU占用率 100%

更新容器mynginx1 的cpu上限为10%:

cpp 复制代码
docker update --cpu-period=100000 --cpu-quota=10000 mynginx1

停止运行的容器,并释放资源:

cpp 复制代码
docker stop mynginx1
docker rm mynginx1
相关推荐
大树8820 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠20 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质21 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn861 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉1 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦1 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_961875241 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant