Docker入门指南:镜像、容器与仓库的核心概念解析

目录

前言:为什么需要Docker?

一、Docker能做什么?

二、核心概念解析

1. 镜像(Image):应用的标准化打包

2. 容器(Container):镜像的运行实例

3. 镜像仓库(Registry):镜像的集中管理中心

三、Docker的典型工作流程

四、Docker的优势总结

五、学习建议


前言:为什么需要Docker?

在传统的应用部署过程中,开发人员经常遇到"在我的机器上能运行,为什么到服务器上就不行?"的经典问题。这个问题的根源在于环境不一致——开发环境、测试环境和生产环境之间的差异导致应用行为不可预测。Docker的出现完美解决了这一痛点,它通过容器化技术实现了"一次构建,处处运行"的理想状态。

一、Docker能做什么?

Docker的核心价值在于它能够帮助我们:

  • 快速下载应用镜像​:就像从应用商店下载安装包一样简单
  • 轻松创建和运行容器​:一键启动完整应用环境
  • 实现快速部署​:从开发到生产环境的一致性保障

二、核心概念解析

1. 镜像(Image):应用的标准化打包

镜像是Docker的基石,它包含了:

  • 应用代码本身
  • 运行所需的函数库
  • 所有依赖项
  • 环境配置参数

通俗理解​:镜像就像是面向对象的"类",它定义了容器的初始状态和行为。

# 查看本地镜像列表
docker images# 拉取官方镜像示例
docker pull nginx

2. 容器(Container):镜像的运行实例

容器是镜像的运行实体,具有以下特点:

  • 轻量级:共享主机操作系统内核
  • 可移植:包含运行应用所需的一切
  • 隔离性:进程、网络、文件系统相互隔离

生命周期管理​:

# 启动新容器
docker run -d --name ms -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql

这里做一个命令解读:

"-d":以后台(守护进程)模式运行容器。

"--name ms":指定容器名称为"ms",后续方便使用该名称直接对容器进行操作。

"-p 3306:3306":端口映射配置【主机端口:容器端口】,这里将主机的3306端口映射到容器的3306端口(MySQL默认端口),允许外部通过主机的3306端口访问容器内的MySQL服务。

"-e MYSQL_ROOT_PASSWORD=123":设置环境变量,这里是设置MySQL root用户的密码为"123",这是MySQL官方镜像的必需参数,否则容器启动会失败。

"mysql":指定使用的镜像名称(这里使用官方MySQL镜像),若本地没有该镜像,Docker会自动从Docker Hub下载。

# 查看运行中的容器
docker ps

# 查看运行中的容器(-a:无论容器有没有启动都可以查看)
docker ps -a

# 停止容器
docker stop redis

3. 镜像仓库(Registry):镜像的集中管理中心

Docker仓库分为:

  • 公共仓库​:如Docker Hub,包含大量官方和社区维护的镜像
  • 私有仓库​:企业用于内部镜像管理

三、Docker的典型工作流程

  1. 开发阶段​:编写Dockerfile定义镜像
  2. 构建阶段​:docker build生成镜像
  3. 测试阶段​:docker run启动容器测试
  4. 部署阶段​:推送到仓库并部署到生产环境

示例Dockerfile​(构建一个基于 Python 3.8 的轻量级镜像,安装依赖后运行 app.py 并对外暴露 5000 端口。):

FROM python:3.8-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]

四、Docker的优势总结

特性传统方式Docker方式
环境一致性难以保证完全一致
资源占用高(完整OS)低(共享内核)
启动速度分钟级秒级
隔离性较弱
可移植性依赖环境一次构建处处运行

五、学习建议

  1. 从官方文档开始:https://docs.docker.com
  2. 实践基础命令:run、exec、logs等
  3. 尝试构建自己的第一个镜像
  4. 进一步可以深入学习Docker Compose管理多容器应用等技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型微调实战:基于GpuGeek平台的低成本高效训练方案

文章目录 引言一、GpuGeek平台使用入门1. 注册与账号设置2. 控制台功能概览3. 快速创建GPU实例3. 预置镜像与自定义环境 二、GpuGeek平台核心优势解析1. 显卡资源充足:多卡并行加速训练2. 镜像超多:开箱即用的开发环境3. 计费灵活:按需付费降…

Linux:计算机的层状结构

1.冯诺依曼体系结构 我们常见的计算机,如笔记本、台式机。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系结构。 CPU:运算器和控制器组成。运算器主要工作是做算术运算和逻辑运算。控制器主要工作是协调设备之间信息流动的…

LangGraph(四)——加入人机交互控制

目录 1. 引言2. 添加Human Assistance工具3. 编译状态图4. 提示聊天机器人5. 恢复执行参考 1. 引言 智能体可能不可靠,甚至需要人工输入才能完成任务。同样,对于某些操作,你可能需要在运行前获得人工批准,以保证一切按预期运行。 …

数据结构【AVL树】

AVL树 1.AVL树1.AVL的概念2.平衡因子 2.AVl树的实现2.1AVL树的结构2.2AVL树的插入2.3 旋转2.3.1 旋转的原则 1.AVL树 1.AVL的概念 AVL树可以是一个空树。 它的左右子树都是AVL树,且左右子树的高度差的绝对值不超过1。AVL树是一颗高度平衡搜索二叉树,通…

JavaScript【5】DOM模型

1.概述: DOM (Document Object Model):当页面被加载时,浏览器会创建页面的文档对象模型,即dom对象;dom对象会被结构化为对象树,如一个HTML文档会被分为head,body等部分,而每个部分又…

STM32烧录程序正常,但是运行异常

一、硬件配置问题 BOOT引脚设置错误 STM32的启动模式由BOOT0和BOOT1引脚决定。若设置为从RAM启动(BOOT01,BOOT10),程序在掉电后无法保存,导致复位后无法正常运行。应确保BOOT00(从Flash启动)15。…

汽车二自由度系统模型以及电动助力转向系统模型

汽车二自由度系统模型与电动助力转向系统(EPS)的详细建模方案,包含理论推导、MATLAB/Simulink实现代码及参数说明: 一、二自由度汽车模型 1. 模型描述 包含以下两个自由度: 横向运动(侧向加速度&#xf…

git提交库常用词

新功能 feat修改BUG fix文档修改 docs格式修改 style重构 refactor性能提升 perf测试 test构建系统 build对CI配置文件修改 ci修改构建流程、或增加依赖库、工具 chore回滚版本 revert

JavaScript 时间转换:从 HH:mm:ss 到十进制小时及反向转换

关键点 JavaScript 可以轻松实现时间格式(HH:mm:ss 或 HH:mm)与十进制小时(如 17.5)的相互转换。两个函数分别处理时间字符串到十进制小时,以及十进制小时到时间字符串的转换,支持灵活的输入和输出格式。这…

LLM智能体新纪元:深入解析MCP与A2A协议,赋能智能自动化协作

LLM智能体(LLM agents)是能够自主行动以实现特定目标的AI系统。在实际应用中,智能体能够将用户请求拆解为多个步骤,利用知识库或API获取数据,最终整合出答案。这让智能体相比于传统独立聊天机器人拥有更强大的能力——…

[PMIC]PMIC重要知识点总结

PMIC重要知识点总结 摘要:PMIC (Power Management Integrated Circuit) 是现代电子设备中至关重要的组件,负责电源管理,包括电压调节、电源转换、电池管理和功耗优化等。PMIC 中的数字部分主要涉及控制逻辑、状态机、寄存器配置、通信接口&am…

PYTHON训练营DAY28

类 (一)题目1:定义圆(Circle)类 要求: 包含属性:半径 radius。包含方法: calculate_area():计算圆的面积(公式:πr)。calculate_circ…

机器学习-人与机器生数据的区分模型测试 -数据筛选

内容继续机器学习-人与机器生数据的区分模型测试 使用随机森林的弱学习树来筛选相对稳定的特征数据 # 随机森林筛选特征 X data.drop([city, target], axis1) # 去除修改前的城市名称列和目标变量列 y data[target] X_train, X_test, y_train, y_test train_test_split(X…

Data whale LLM universe

使用LLM API开发应用 基本概念 Prompt Prompt 最初指的是自然语言处理研究人员为下游任务设计的一种任务专属的输入模板。 Temperature 使用Temperature参数控制LLM生成结果的随机性和创造性,一般取值设置在0~1之间,当取值接近1的时候预测的随机性较…

Azure 应用的托管身份与服务主体

Microsoft Entra ID -- 前称 Azure Active Directory -- 提供强大的身份验证和授权功能。托管身份和服务主体通过限制凭据暴露的风险来帮助确保对 Azure 资源的访问安全。 托管身份为Azure原生应用程序自动管理身份,而服务主体则非常适合需要访问Azure资源的外部应…

16 C 语言布尔类型与 sizeof 运算符详解:布尔类型的三种声明方式、执行时间、赋值规则

1 布尔类型 1.1 布尔类型概述 布尔类型用于表示逻辑上的真(true)和假(false)两种状态,是编程中条件判断和逻辑运算的基础。在 C 语言中,布尔值的表示方式随着标准的发展而不断完善。 1.2 布尔类型的三种声…

【C++详解】string各种接口如何使用保姆级攻略

文章目录 一、string介绍二、string使用构造函数析构函数赋值运算符重载string的遍历修改方法1、下标[]2、迭代器3、范围for 迭代器使用详解const迭代器反向迭代器(reverse) Capacity(容量相关)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(缩容)reserve(扩…

回调函数应用示例

回调函数是一种通过函数指针(或引用)调用的函数,它在特定事件或条件发生时被另一个函数调用。回调函数的核心思想是将函数作为参数传递,以便在适当的时候执行自定义逻辑,常用于异步编程、事件驱动架构等场景。 业务场景…

linux标准库头文件解析

linuxc标准库 C 标准库&#xff08;C Standard Library&#xff09;包含了一组头文件&#xff0c;这些头文件提供了许多函数和宏&#xff0c;用于处理输入输出、字符串操作、数学计算、内存管理等常见编程任务。。 头文件功能简介<stdio.h>标准输入输出库&#xff0c;包含…

Unbuntu 命令

Ubuntu 命令速查表​ ​分类​​命令​​功能描述​​示例/常用选项​​​​文件与目录​ls列出目录内容ls -a&#xff08;显示隐藏文件&#xff09;; ls -lh&#xff08;详细列表易读大小&#xff09; cd切换目录cd ~&#xff08;主目录&#xff09;; cd ..&#xff08;上级…