一、Docker 作用
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。
Docker 就是让你的应用"一次打包,到处运行"的神器!
二、Docker 基础概念
Docker 包括三个基本概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
理解了这三个概念,就理解了 Docker 的整个生命周期。
三、Image 镜像
Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
让我用最简单的方式来解释 Docker 镜像:
镜像就像"制作蛋糕的配方"
Docker镜像 = 蛋糕配方书
- 里面写清楚了:
- 需要什么材料(面粉、鸡蛋、糖...)
- 每一步怎么做(先搅拌、再烘烤...)
- 最终做成什么样
镜像的实际内容
# 这就像配方书的步骤:
FROM ubuntu:20.04 # 基础材料:Ubuntu系统
RUN apt-get update # 步骤1:更新系统
RUN apt-get install nginx # 步骤2:安装nginx软件
COPY ./website /var/www # 步骤3:复制网站文件
CMD ["nginx", "-g", "daemon off;"] # 最后:启动服务
Docker镜像就是一个"制作说明书",告诉你如何创建一个运行环境。它本身不能运行,但可以用来创建多个完全相同的运行实例(容器)。
四、Container 容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器,我们可以简单理解为:电脑上的应用
一个容器 = 完整的应用 + 独立的运行环境
网站容器:网站功能 + 独立的软件环境
数据库容器:存储数据 + 独立的数据库环境
两个容器互不干扰,在同一台服务器上运行
五、Repository 仓库
Registry 是一个用于存储和分发 Docker 镜像的服务 。您可以把它想象成一个代码仓库(比如 GitHub),但它专门用来存放 Docker 镜像,而不是代码。
Registry 的主要作用
- 集中存储镜像 :当您创建了一个 Docker 镜像后,可以将其推送到 Registry,方便团队成员或其他用户下载和使用。
- 版本控制 :您可以为一个镜像推送多个版本(通过标签 tag 来区分),实现对镜像的版本管理。
- 分发与协作 :通过 Registry,可以轻松地将镜像从开发环境分享到测试环境和生产环境,简化部署流程。
- 访问控制与安全 :特别是私有 Registry,可以提供更强的安全性和访问控制,确保只有授权用户才能访问您的镜像。
Registry 的类型
- 公共 Registry :最著名的就是 Docker Hub 。它是 Docker 官方的公共仓库,包含了海量的官方和用户上传的镜像。默认情况下,当您执行 docker pull 或 docker run 命令时,Docker 会从 Docker Hub 拉取镜像。
- 私有 Registry :出于安全、网络速度或合规性等原因,许多公司或个人会搭建自己的私有 Registry。您可以使用 Docker 官方提供的 registry 镜像轻松地在自己的服务器上搭建一个私有仓库。
发表评论
全部评论 (0)