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

docker基本知识

目录

镜像 vs 容器

概念

关系

实际例子

生命周期关系

实际工作流程

1.开发阶段

2.部署阶段

Docker打包流程

dockerfile的作用

部署.tar文件的完整流程

删减镜像中的文件


镜像 vs 容器

概念

1.镜像=模版/蓝图

        镜像就像是一个房子的设计图纸

        它包含了所有需要的东西,但还没有"建造"出来

        镜像本身不能运行,只是静态的文件

2.容器=实际运行的实例

        容器就像是根据图纸实际建造出来的房子

        它是镜像的运行实例

        容器是动态的,可以启动、停止、删除

关系

1.一对多关系

1个镜像->可以创建多个容器

      2.创建过程

      1>现有镜像

              docker images

      2>基于镜像创建容器

              docker run -d --name app1 people-counting:openeuler

              docker run -d --name app2 people-counting:openeuler

              docker run -d --name app3 people-counting:openeuler

      3>查看容器

              docker ps

      实际例子

      场景1:开发环境

      1>有一个镜像

              Docker images

      2>创建开发容器

              docker run -d --name dev-app people-counting:openeuler

      3>创建测试容器

              docker run -d --name test-app people-counting:openeuler

      4>两个容器都基于同一个镜像,但独立运行

      场景2:生产环境

      1>同一个镜像

              docker images

      2>创建多个生产实例

              docker run -d -p 8001:8000 --name prod-app-1 people-counting:openeuler

              docker run -d -p 8002:8000 --name prod-app-2 people-counting:openeuler

              docker run -d -p 8003:8000 --name prod-app-3 people-counting:openeuler

      3>负载均衡,多个实例提供服务

      生命周期关系

      1.镜像创建容器(基于镜像创建容器)

              docker run -d --name my-app people-counting:openeuler

      2.容器停止后(容器停止,但镜像还在)

              docker stop my-app

              docker images  # 镜像还在

               docker ps -a   # 容器还在,但状态是停止

      3.容器删除后(删除容器,镜像还在)

              docker rm my-app

              docker images  # 镜像还在

              docker ps -a   # 容器被删除了

      4.镜像删除后(删除镜像,基于它的容器会受影响)

              docker rmi people-counting:openeuler

              如果还有容器在使用这个镜像,会报错

      实际工作流程

      1.开发阶段

              1>构建镜像

                      docker build -t my-app:latest .

              2> 测试容器

                      docker run -d --name test my-app:latest

              3>修改代码,重新构建镜像

                      docker build -t my-app:v2.0 .

              4>创建新版本容器

                      docker run -d --name test-v2 my-app:v2.0

      2.部署阶段

              1>从镜像仓库拉取镜像

                      docker pull my-app:latest

              2>创建生产容器

                      docker run -d -p 8000:8000 --name prod my-app:latest

              3>监控容器状态

                      docker ps

                      docker logs prod

      Docker打包流程

      1.构建镜像

              Docker build -t your-project:latest .

      2.查看镜像

              Docker images

      3.保存镜像为tar文件

              Docker save -o your-project.tar your-project:latese

      4.加载镜像

              Docker load -i your-project.tar

      dockerfile的作用

      1.定义镜像构建过程

              Dockerfile就像是一个“菜谱”,告诉docker如何一步步构建你的应用镜像

      2.自动化部署

              有了dockerfile,任何人都可以:

              用相同的环境运行你的应用

              不需要手动安装依赖

              确保环境一致性

      3.版本控制

              DockerFile 可以:

              记录应用的完整环境配置

              支持版本回滚

              便于团队协作

      当运行docker build -t my-app

      Docker 会:

      1. 读取dockerFile
      2. 按顺序执行每个指令
      3. 为每个指令创建新的层
      4. 最终生成一个完整的镜像

      部署.tar文件的完整流程

      1.加载镜像文件

              Docker load -i people-counting.tar

              或者指定镜像名称

              Docker load -i people-counting.tar -t people-counting:openeuler

      2.查看加载的镜像

              Docker images

      3.运行容器

              #基本运行命令

              docker run -d --name people-counting-app people-counting:openeuler

              # 带端口映射的运行

              docker run -d -p 8000:8000 --name people-counting-app people-counting:openeuler

      4.检查容器状态

              查看运行中的容器                    docker ps

              查看所有容器(包括停止的)  docker ps -a

              查看容器日志   docker logs people-counting-app

              实时查看日志   docker logs -f people-counting-app

      5.测试应用

              测试健康检查接口

      删减镜像中的文件

      1.启动->docker   docker --version

      2.加载镜像->docker load -i people-counting_openeuler.tar

      3.查看镜像->docker images

      4.进入镜像容器内部,查看里面的文件结构

               docker run -it people-counting:openeuler bash

      5.查看当前目录文件->ls -la

      6.删除多余的文件->rm dockerfile2

      7.删除空的目录->rmdir data

      如果想保存这些删除操作到镜像中,

      1.退出容器->exit

      2.提交容器更改到镜像

              docker commit 525f49a92bdd people-counting:openeuler-cleaned

      3.验证新镜像->Docker images

      4.保存镜像为tar文件->Docker save -o your-project.tar your-project:latese

      http://www.dtcms.com/a/516008.html

      相关文章:

    1. 什么网站服务器好wordpress如何添加目录菜单
    2. 12、【Ubuntu】【VSCode】VSCode 断联问题分析:getent 命令(二)
    3. RHCSA作业2
    4. 如何才能提升视频的「听觉质感」
    5. 江西省赣州电子商务网站怎么做seo
    6. 视频多的网站建设科技设计公司网站模板下载
    7. 1.北京三维天地公司-实施实习生
    8. c#笔记之事件
    9. [RabbitMQ] 最新版本深度解析:4.0+ 新特性、性能飞跃与生产实践(2025 年更新)
    10. 2026 AI可见性:构建未来-proof策略的顶级工具
    11. 使用子进程实现 C++ 与 Python 交互式控制台
    12. 网站建设登录界面代码上海app开发费用
    13. 复习下线性代数,使用向量平移拼接两段线
    14. 南通网站定制哪家好北京西站附近景点
    15. 网站建设大怎么做网页自我介绍
    16. 光子精密3D工业相机:赋能国产“2D+3D”精密测量微米级迭代
    17. HTTP 三次握手最终状态变更的时机
    18. ROS跑ORB-SLAM3遇见的问题总结
    19. 晋中路桥建设集团有限公司网站网站开发费用科目
    20. kubernetes K8s的监控系统Prometheus 酷炫整体容器监控(三)
    21. 记录一次 K8s 环境中 DNS 解析延迟导致 WebClient 请求失败的排查过程
    22. 美的网站建设水平swot分析陕西网站建设的目的
    23. 安科瑞能源物联网云平台光伏防逆流解决方案
    24. Vivado调用FFT IP核进行数据频谱分析
    25. 数据结构之顺序表:一款优秀的顺序存储结构
    26. 如何将联系人从iPhone转移到iQOO
    27. 广州营销型网站成都网站建设app开发
    28. 个体户做网站有用吗外链工厂
    29. LVDS系列32:Xilinx 7系 ADC LVDS接口参考设计(三)
    30. TPS62402DRCR双通道同步降压DC-DC转换器 TI德州仪器 降压转换器 芯片解析