深入解析: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

      posted on 2026-01-28 22:32  ljbguanli  阅读(1)  评论(0)    收藏  举报