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

Docker 实战系列:接入生产场景,快速拉起服务

Mysql 容器化安装

  1. 进入 mysql 的镜像网站,查找 mysql 的镜像

    mysql dockerhub官网

  2. 选择使用最多的 5.7 版本,拉取镜像

drw@VM-0-14-ubuntu:~$dockerpull mysql:5.75.7: Pulling from library/mysql df9a4d85569b: Pull complete ffc89e9dfd88: Pull complete 90986bb8de6e: Pull complete e9f03a1c24ce: Pull complete 43d05e938198: Pull complete 1c56c3d4ce74: Pull complete ae71319cb779: Pull complete 68c3898c2015: Pull complete 6b95a940e7b6: Pull complete 20e4dcae4c69: Pull complete 064b2d298fba: Pull complete 96889c47a44a: Download complete 9eb6a52b8441: Download complete Digest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb Status: Downloaded newer imageformysql:5.7 docker.io/library/mysql:5.7
  1. 启动一个 mysql,并指定密码和端口开放
    dockerrun--namemysql-eMYSQL_ROOT_PASSWORD=yourpassword-p3306:3306-dmysql:5.7
    eg:
drw@VM-0-14-ubuntu:~$dockerrun--namemysql-eMYSQL_ROOT_PASSWORD=Dairenwen1092-p3306:3306-dmysql:5.7 02f1cc5416a5cf454f97d59b173d72dcdc9556218a55f83036ff3c880ece3267
  1. 进入容器登录,可以看到已经可以正常登录 mysql 了
drw@VM-0-14-ubuntu:~$ dockerexec-it mysql bash bash-4.2# mysql -u root -pEnter password: Welcometothe MySQL monitor.Commandsendwith;or\g.Your MySQL connection idis2Server version:5.7.44MySQL Community Server(GPL)Copyright(c)2000,2023,Oracleand/orits affiliates.Oracleisa registered trademarkofOracle Corporationand/orits affiliates.Other names may be trademarksoftheir respective owners.Type'help;'or'\h'forhelp.Type'\c'toclear thecurrentinput statement.mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||sys|+--------------------+4rowsinset(0.00sec)mysql>

Redis 容器化安装

  1. 下载 redis 镜像
drw@VM-0-14-ubuntu:~$dockerpull redis:8.08.0: Pulling from library/redis 205c6f67f159: Pull complete 8c8d18d687a1: Pull complete cc56679b8a07: Pull complete 4f4fb700ef54: Pull complete c99b74b46dd2: Pull complete da539b676105: Pull complete b07b7caef816: Pull complete 68d9479f5b3d: Download complete bc43288660d1: Download complete Digest: sha256:c6a3c149aae23f911f2f4dbd9d144718f802046b6f1706d4abf4ff84cc2792aa Status: Downloaded newer imageforredis:8.0 docker.io/library/redis:8.0
  1. 启动 redis 容器
drw@VM-0-14-ubuntu:~$dockerrun-d--nameredis-p8300:6379 redis:8.0 9671848c75fac867b04f0e3b130eccc677919f4ece6e876c101464a0448e5442
  1. 进入容器,设置一个 key
drw@VM-0-14-ubuntu:~$ dockerexec-it redis bash root@9671848c75fa:/data# redis-cli127.0.0.1:6379>ping PONG127.0.0.1:6379>setkey1 helloredis OK127.0.0.1:6379>get key1"helloredis"127.0.0.1:6379>

制作 C++ 容器

  1. 下载 Ubuntu 镜像

    root@139-159-150-152:/data/myworkdir/container# docker pull ubuntu:22.0422.04: Pulling from library/ubuntu 2ab09b027e7f: Pull complete Digest: sha256:67211c14fa74f070d27cc59d69a7fa9aeff8e28ea118ef3babc295a0428a6d21 Status: Downloaded newer imageforubuntu:22.04 docker.io/library/ubuntu:22.04
  2. 启动容器

    root@139-159-150-152:/data/myworkdir/container# docker run --name mygcc -it ubuntu:22.04 bashroot@50d527b8343e:/#
  3. 配置国内镜像源加速

    root@50d527b8343e:/# sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.listroot@50d527b8343e:/#
  4. 安装 gcc vim

    aptupdateaptinstallgccvim-y
  5. 编辑代码

    root@50d527b8343e:/# mkdir srcroot@50d527b8343e:/# cd srcroot@50d527b8343e:/src# vim demo.c

    输入以下内容:

    #include<stdio.h>intmain(){printf("hello docker!\n");return0;}
  6. 编译代码

    root@50d527b8343e:/src# gcc demo.c -o demo
  7. 在容器中运行

    root@50d527b8343e:/src# ./demohello docker!
  8. 退出容器

    root@50d527b8343e:/src# exitexit
  9. 这个时候容器已经退出,如果想再次进入使用docker restart就可以恢复容器

  10. 清理容器释放空间

    dockerstop mygccdockerrmmygcc

容器资源更新

  1. 运行一个nginx

    dockerrun-d--namemynginx-p8086:80 nginx:1.24.0
  2. 我们可以通过docker top查看容器中有哪些进程,添加aux,可以看到占用的内存和CPU信息

drw@VM-0-14-ubuntu:~$dockertopmynginx auxUSERPID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root33319980.00.189326144? Ss22:400:00 nginx: master process nginx-gdaemon off;message+33320760.00.093202740? S22:400:00 nginx: worker process message+33320770.00.093202740? S22:400:00 nginx: worker process message+33320780.00.093202740? S22:400:00 nginx: worker process message+33320790.00.093202740? S22:400:00 nginx: worker process
  1. 通过docker stats可以看到资源的动态变化
drw@VM-0-14-ubuntu:~$dockerstats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 6b2d1942351c mynginx0.00%5.012MiB /3.636GiB0.13% 726B / 126B1.2MB /12.3kB5
  1. 通过docker update更新docker的最大内存
drw@VM-0-14-ubuntu:~$dockerupdate-m100m --memory-swap 10m mynginx Error response from daemon: Minimum memoryswap limit should be larger than memory limit, see usage

系统提示,设置的内存应该大于已经limit的内存,这说明在docker run的时候需要提前设置内存,否则不方便调整

常见问题

docker create、docker start和docker run有什么区别?

docker create:从Docker映像创建一个全新的容器。但不会立即运行它。

docker start:将启动任何已停止的容器。如果使用docker create命令创建容器,则可以使用此命令启动它。

docker run:是创建和启动的组合,如果docker run在本地镜像仓库找不到上述映像,它可以从Docker Hub中提取映像。

docker import和docker load有什么区别?

想要了解docker loaddocker import命令的区别,还必须知道docker savedocker export命令:

  • docker save images_name:将一个镜像导出为文件。再使用docker load命令将文件导入为一个镜像,会保存该镜像的所有历史记录。比docker export命令导出的文件大,会保存镜像的所有历史记录
  • docker export container_id:将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照

docker rm & docker rmi & docker prune的差异?

docker rm:删除一个或多个容器

docker rmi:删除一个或多个镜像

docker prune:用来删除不再使用的docker对象

http://www.jsqmd.com/news/1346356/

相关文章:

  • 无货源怎么一键下单?抖掌柜助力抖店商家简化货源采购流程 - 抖掌柜一键下单
  • 如何在VirtualBox的openKylin虚拟机下加载U盘(v0.1.0)
  • LVMH创新奖揭秘:AI重塑奢侈品供应链与品牌可见性
  • GRETNA图论网络分析工具箱:让复杂的脑网络分析变得如此简单!
  • 海龟汤游戏 App 开发实录:用 HarmonyOS ArkTS 构建推理互动平台
  • 电感器原理
  • 新版的百度智能云控制台-应用接入-创建应用的步骤 + 401或403的错,需要在预置推理服务中开通模型调用
  • 基于LabVIEW与NI myRIO的工业视觉边缘检测系统实战指南
  • 构建Godot GDScript自动化工作流:独立工具链gdtoolkit详解
  • Unity WebGL全屏模式中文输入难题:从原理到实战的完整解决方案
  • Spark SQL语法执行顺序
  • 三明|2026 彩钢瓦翻新、彩钢瓦防水、彩钢瓦补漏、彩钢瓦除锈、彩钢瓦喷漆、金属屋面翻新、钢结构屋面防水、厂房屋面除锈喷漆、屋顶彩钢瓦修缮合作方甄选避坑指南 - 本地便民网
  • 无货源一件发货步骤详解,抖掌柜助力抖店商家高效处理订单 - 抖掌柜一键下单
  • Qt软件开关等按钮点击时,加入权限验证的一种方案
  • 终极免费NTFS解决方案:Nigate让Mac完美读写Windows硬盘
  • LangChain核心概念,Chain、Agent、Tool、Memory、Retriever一文搞懂
  • 莆田|2026 彩钢瓦翻新、彩钢瓦防水、彩钢瓦补漏、彩钢瓦除锈、彩钢瓦喷漆、金属屋面翻新、钢结构屋面防水、厂房屋面除锈喷漆、屋顶彩钢瓦修缮合作方甄选避坑指南 - 本地便民网
  • 2026年重庆PVC管源头厂家梳理:渝腾电力产品及服务信息汇总 - 董不懂啊
  • 传统服装厂数字化转型:从代工到自主品牌的实战路径
  • 使用YOLO8训练一个自己的模型
  • ROS2+Gazebo+ArduSub构建高保真水下机器人仿真平台
  • 国有房企人才档案纸质化难更新?华恒智信成功案例
  • 2026年靠谱的建筑消防竣工检测、成都消防评估、医院消防安全评估公司怎么选?本地机构综合参考指南 - 优质品牌商家
  • 综合实践:企业网站上云部署实践
  • 【ROS2+深度相机】Orbbec相机时图像传输延迟显著 (DDS数据分发服务配置)
  • 无货源一键铺货怎么做?抖掌柜助力抖店商家高效完成货源上架运营 - 抖掌柜一键下单
  • 原神成就数据导出终极指南:快速免费备份你的游戏记录
  • Unity集成本地大模型:Ollama+DeepSeek实现智能NPC对话系统
  • AI绘画创意融合实战:从概念拆解到Stable Diffusion生成“哈气小动物踢世界杯”
  • RT-Thread文件系统实战:从FatFs到LittleFS的嵌入式存储管理