news 2026/8/7 13:03:50

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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对象

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 12:57:31

Citra 3DS模拟器:从入门到精通的完全指南

Citra 3DS模拟器&#xff1a;从入门到精通的完全指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/gh_mirrors/cit/citra 你是否曾梦想在电脑上重温《精灵宝可梦XY》、《塞尔达传说&#xff1a;时之笛3D》等经典3DS游戏&#xff1f;C…

作者头像 李华
网站建设 2026/8/7 12:55:28

重构GitHub资源获取:精准提取的技术实现与效率革命

重构GitHub资源获取&#xff1a;精准提取的技术实现与效率革命 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 在开源协作的生态系统中&#xff0c;GitHub作为核心代码仓库平台承载着海量项目资源。然而&…

作者头像 李华
网站建设 2026/8/7 12:53:40

掌握JavaScript PPTX处理:构建自动化报告系统的完整指南

掌握JavaScript PPTX处理&#xff1a;构建自动化报告系统的完整指南 【免费下载链接】js-pptx Pure Javascript reader/writer for PowerPoint 项目地址: https://gitcode.com/gh_mirrors/js/js-pptx 您是否曾经需要在不依赖桌面软件的情况下处理PowerPoint文件&#xf…

作者头像 李华
网站建设 2026/8/7 12:52:19

紧急提醒!如何去除DeepSeek复制的多余符号?再不解决这个Bug,你的办公效率要被同事甩开十条街!AI导出鸭杀疯了

紧急提醒&#xff01;如何去除DeepSeek复制的多余符号&#xff1f;再不解决这个Bug&#xff0c;你的办公效率要被同事甩开十条街&#xff01;AI导出鸭杀疯了一篇来自资深技术架构师的硬核测评&#xff1a;那些让你抓狂的星号、井号和乱码&#xff0c;究竟该怎么彻底消灭&#x…

作者头像 李华
网站建设 2026/8/7 12:51:54

终极指南:5分钟掌握Windows版iperf3网络性能测试工具

终极指南&#xff1a;5分钟掌握Windows版iperf3网络性能测试工具 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 想要准确测量你的网络带宽、延迟和…

作者头像 李华
网站建设 2026/8/7 12:50:57

综合实践:企业网站上云部署实践

综合实践&#xff1a;企业网站上云部署实践 一、背景与方案设计 1.1 业务需求 数据节点与业务节点分离支持动态调整服务器数量&#xff08;弹性伸缩&#xff09;自动流量分发到多台服务器&#xff08;负载均衡&#xff09;使用云监控服务监控业务状态 1.2 解决方案需求解决方案…

作者头像 李华