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 会:
- 读取dockerFile
- 按顺序执行每个指令
- 为每个指令创建新的层
- 最终生成一个完整的镜像
部署.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