Docker理论与操作

docker核心概念

1.传统应用部署的痛点与docker的解决方案

传统的应用部署中会经常遇到一下问题

  • 环境不一致:应用在开发环境运行正常,但在测试或生产环境出现问题
  • 依赖管理复杂:不同应用需要不同版本的运行时、库文件等
  • 资源利用率低:传统虚拟机需要完整的操作系统,占用大量资源
  • 部署复杂:需要手动配置环境、安装依赖,容易出错

docker恰恰解决了这些问题,使用docker可以

  • 环境标准化:将应用及其依赖打包在一起,确保在任何环境中都能一致运行
  • 轻量级:容器共享宿主机的操作系统内核,比虚拟机更轻量
  • 快速部署:容器可以在几秒内启动,大大提高了部署效率
  • 可移植性:一次构建,到处运行

docker的理念将遵循容器化不可变基础设施

  • 应用和环境被打包成不可变的镜像
  • 每次部署都使用相同的镜像
  • 配置通过环境变量或配置文件注入
  • 问题修复通过重新构建镜像而非修改运行中的容器

2.镜像

镜像是一个只读的模板,包含了运行应用所需的所有内容。简单来说就是一个压缩包,压缩包内包含了应用的所有环境(包括应用本身),解压就直接能用

镜像的特点

  • 分层存储:镜像由多个层组成,每一层代表一次修改
  • 只读性:镜像本身是只读的,不能直接修改
  • 可复用:同一个镜像可以创建多个容器
  • 版本管理:通过标签(tag)进行版本管理

3.容器

容器是镜像的运行实例,是一个轻量级,可移植的执行环境。简单来说镜像就是压缩包,解压出来的东西就是容器

容器主要通过 Linux内核提供的两大核心技术 来实现隔离:Namespace(命名空间) 和 Cgroups(控制组)

容器的特点

  • 隔离性:每个容器都有自己的文件系统、网络和进程空间
  • 临时性:容器可以被创建、启动、停止、删除
  • 可写层:容器在镜像基础上添加了一个可写层
  • 进程级:容器内通常运行一个主进程

4.仓库

仓库是存储和分发镜像的地方

仓库的分类

  • 公共仓库:如 Docker Hub,任何人都可以使用
  • 私有仓库:企业内部搭建,用于存储私有镜像
  • 官方仓库:由软件官方维护的镜像仓库

5.docker和虚拟机的区别

虚拟机是完整的硬件和操作系统的

docker是运行在本身操作系统之上的应用运行环境

特性虚拟机Docker容器
隔离级别硬件级别虚拟化操作系统级别虚拟化
操作系统每个VM需要完整OS共享宿主机OS内核
资源占用重量级,占用较多资源轻量级,资源占用少
启动时间分钟级别秒级别
性能开销较大接近原生性能
镜像大小GB级别MB级别

docker的优势

1.环境一致性

减少环境相关的bug和部署问题

2.轻量级和高效

比虚拟机占用更少资源,秒级启动时间,单机可运行更多应用实例

3.可移植性

Linux、Windows、macOS都支持,在各种云平台间迁移,本地开发,云端部署

4.版本控制和回滚

每个版本都有对应的镜像,出问题时快速回到上一版本,同时运行不同版本进行对比

5.扩展性

快速创建更多容器实例,根据负载自动调整容器数量,服务拆分和独立部署

docker操作

获取镜像

docker pull 镜像名
#拉取指定架构镜像,如ARM64
docker pull --platform linux/amd64 nginx

查找镜像

# 列出本地所有镜像
docker images

# 显示镜像详细信息
docker image inspect nginx

# 查看镜像历史
docker history nginx
#删除镜像
docker rmi 镜像名字    #镜像里的容器要全部删除

运行容器

# 运行容器
docker run 镜像名字                             # 前台运行
docker run -d nginx                          # 后台运行
docker run -d --name my-nginx nginx          # 指定名称
docker run -it ubuntu /bin/bash              # 交互式运行
# 查看容器
docker ps                                    # 运行中的容器
docker ps -a                                 # 所有容器
docker ps -l                                 # 最近创建的容器
# 启动/停止/重启容器
docker start name                  #启动容器
docker stop name                   #停止容器
docker restart name                #重启容器
docker pause name
docker unpause name                #更新容器
# 删除容器
docker rm container_name
docker rm -f container_name                  # 强制删除运行中的容器
docker container prune                       # 删除所有停止的容器

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇