当前位置: 首页 > article >正文

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

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

Mysql容器化安装

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

拉取mysql5.7版本的镜像:

docker pull mysql:5.7

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

docker run --name mysql -e MYSQL_R00T_PASSW0RD=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 pult 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个(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

http://www.kler.cn/a/507148.html

相关文章:

  • VLANIF配置之区别(Differences in VLANIF Configuration)
  • Jmeter 简单使用、生成测试报告(一)
  • Agent一键安装,快速上手Zabbix监控!
  • HarmonyOS Next 实现登录注册页面(ARKTS) 并使用Springboot作为后端提供接口
  • 开源文件存储分享平台Seafile部署与应用
  • 【进程与线程】进程的状态
  • RocketMQ 学习笔记01
  • 从Arrays源码学习定义工具类
  • sqlalchemy The transaction is active - has not been committed or rolled back.
  • leetcode hot100(2)
  • 【CSS】:nth-child和:nth-of-type
  • 【Elasticsearch】全文搜索与相关性排序
  • SCSSA-BiLSTM基于改进麻雀搜索算法优化双向长短期记忆网络多特征分类预测Matlab实现
  • UI自动化测试框架之PO模式+数据驱动
  • 如何选择合适的服务器?服务器租赁市场趋势分析
  • 【遥感目标检测】【数据集】DOTA:用于航空图像中目标检测的大规模数据集
  • 【深度学习】Pytorch:CUDA 模型训练
  • .net core 中使用AsyncLocal传递变量
  • 【实践功能记录9】使用pnpm打补丁
  • VD:生成a2l文件
  • Lora理解QLoRA
  • iOS - Objective-C 底层中的内存屏障
  • 服务器下发任务镭速利用变量实现高效的大文件传输效率
  • Python人工智能在气象中的应用,包括:天气预测、气候模拟、降雨量和降水预测、气象数据分析、气象预警系统
  • 【Element】一键重置表单resetFields
  • 【开源分享】nlohmann C++ JSON解析库