当前位置: 首页 > news >正文

上位机知识篇---Docker

Docker 详细介绍

一、Docker 是什么

Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个标准化的单元(称为容器)中,确保应用在任何环境中都能以相同的方式运行

简单来说,Docker 解决了 "在我的机器上能运行,在你的机器上却不能运行" 的问题。它通过容器化技术,将应用与底层基础设施隔离开来,实现了 "一次构建,到处运行" 的目标。

二、常见使用场景

1. 应用开发与测试

  • 开发者可以在本地创建一致的开发环境,避免因环境差异导致的问题
  • 测试人员可以快速部署相同的测试环境,确保测试结果的准确性
  • 前后端开发者可以在各自的容器中工作,互不干扰

2. 持续集成 / 持续部署 (CI/CD)

  • 在 CI 流程中,使用 Docker 构建应用并运行自动化测试
  • 在 CD 流程中,通过 Docker 容器实现应用的快速、一致部署
  • 支持蓝绿部署、金丝雀发布等高级部署策略

3. 微服务架构部署

  • 每个微服务可以打包为独立的 Docker 容器
  • 便于单独扩展、更新和管理各个服务
  • 简化微服务之间的通信和依赖管理

4. 云原生应用开发

  • 与 Kubernetes 等容器编排平台紧密集成
  • 适合开发弹性伸缩、高可用的云原生应用
  • 支持服务网格、配置管理等云原生技术

5. 大数据与 AI 应用部署

  • 快速搭建分布式计算环境
  • 简化机器学习模型的训练和部署流程
  • 便于在不同环境间迁移数据处理工作流

6. 隔离性环境需求

  • 为不同应用创建隔离的运行环境
  • 安全测试和恶意软件分析
  • 临时环境搭建和资源隔离

三、使用优势与劣势

优势

  1. 环境一致性:容器包含应用所需的所有依赖,确保在任何环境中行为一致
  2. 轻量级:容器共享主机操作系统内核,比虚拟机更节省资源
  3. 快速启动:容器启动通常只需几秒,远快于虚拟机
  4. 可移植性:可以在任何支持 Docker 的环境中运行,包括物理机、虚拟机、云服务等
  5. 资源高效利用:能够更有效地利用系统资源,提高服务器利用率
  6. 版本控制:支持容器镜像的版本管理,便于回滚和追踪
  7. 易于扩展:可以快速复制容器实现水平扩展
  8. 隔离性:提供一定程度的应用隔离,增强安全性

劣势

  1. 安全性限制:容器共享主机内核,隔离性不如虚拟机彻底
  2. 学习曲线:需要学习 Docker 特定概念和命令
  3. 存储管理复杂:容器的临时存储特性可能导致数据管理复杂
  4. 网络配置复杂:容器间网络配置相对复杂,特别是在大规模部署时
  5. Windows 支持有限:虽然支持 Windows,但体验和功能不如 Linux 完善
  6. 状态管理挑战:无状态应用更适合容器化,有状态应用需要额外的状态管理策略

四、Docker 使用详细步骤

1. 安装 Docker

在 Ubuntu 上安装
# 更新 apt 包索引
sudo apt-get update# 安装必要的依赖包
sudo apt-get install ca-certificates curl gnupg lsb-release# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 设置 Docker 稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装 Docker 引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io# 验证安装是否成功
sudo docker run hello-world
在 CentOS 上安装
# 安装必要的依赖包
sudo yum install -y yum-utils# 设置 Docker 仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装 Docker 引擎
sudo yum install docker-ce docker-ce-cli containerd.io# 启动 Docker
sudo systemctl start docker# 设置 Docker 开机自启
sudo systemctl enable docker# 验证安装是否成功
sudo docker run hello-world
在 Windows 或 Mac 上安装
  • 下载并安装 Docker Desktop
  • 安装完成后,启动 Docker Desktop 应用

2. 基本 Docker 命令

镜像操作
# 搜索镜像
docker search <镜像名称># 拉取镜像
docker pull <镜像名称>:<标签>  # 标签默认为latest# 查看本地镜像
docker images# 删除镜像
docker rmi <镜像ID或名称># 构建镜像
docker build -t <镜像名称>:<标签> <Dockerfile路径>
容器操作
# 运行容器
docker run [选项] <镜像名称> [命令]# 常用选项:
# -d: 后台运行
# -p: 端口映射,格式为 主机端口:容器端口
# -v: 挂载卷,格式为主机路径:容器路径
# -e: 设置环境变量
# --name: 指定容器名称
# -it: 交互式运行# 示例: 运行一个nginx容器
docker run -d -p 80:80 --name mynginx nginx# 查看运行中的容器
docker ps# 查看所有容器(包括停止的)
docker ps -a# 启动容器
docker start <容器ID或名称># 停止容器
docker stop <容器ID或名称># 重启容器
docker restart <容器ID或名称># 删除容器
docker rm <容器ID或名称># 进入容器
docker exec -it <容器ID或名称> /bin/bash# 查看容器日志
docker logs <容器ID或名称># 查看容器详细信息
docker inspect <容器ID或名称>

3. 创建自定义 Docker 镜像

  1. 创建 Dockerfile

    在项目根目录创建一个名为 Dockerfile 的文件,例如:

    # 使用官方Python镜像作为基础镜像
    FROM python:3.9-slim# 设置工作目录
    WORKDIR /app# 复制当前目录下的所有文件到容器的/app目录
    COPY . .# 安装依赖
    RUN pip install --no-cache-dir -r requirements.txt# 暴露端口
    EXPOSE 5000# 容器启动时执行的命令
    CMD ["python", "app.py"]
    
  2. 构建镜像

    docker build -t my-python-app:1.0 .
    
  3. 运行自定义镜像

    docker run -d -p 5000:5000 --name myapp my-python-app:1.0
    

4. Docker Compose 管理多容器应用

当应用需要多个容器协同工作时(如前端、后端、数据库),可以使用 Docker Compose 简化管理。

  1. 安装 Docker Compose

    对于安装了 Docker Desktop 的用户,Compose 已经包含在内。Linux 用户需要单独安装:

    sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
    
  2. 创建 docker-compose.yml 文件

    version: '3'services:web:build: .ports:- "5000:5000"depends_on:- dbdb:image: postgres:13environment:- POSTGRES_USER=postgres- POSTGRES_PASSWORD=postgres- POSTGRES_DB=mydbvolumes:- postgres_data:/var/lib/postgresql/datavolumes:postgres_data:
    
  3. 使用 Docker Compose 启动应用

    # 启动所有服务
    docker-compose up -d# 查看服务状态
    docker-compose ps# 查看日志
    docker-compose logs# 停止服务
    docker-compose down# 停止服务并删除数据卷
    docker-compose down -v
    

5. 数据持久化

Docker 容器默认是临时的,为了持久化数据,需要使用数据卷:

# 创建数据卷
docker volume create mydata# 查看数据卷
docker volume ls# 查看数据卷详情
docker volume inspect mydata# 使用数据卷运行容器
docker run -d -v mydata:/app/data --name myapp myimage# 挂载主机目录到容器
docker run -d -v /host/path:/container/path --name myapp myimage

五、总结

Docker 作为容器化技术的代表,已经成为现代软件开发和部署的重要工具。它通过容器化解决了环境一致性问题,简化了应用的部署和扩展流程。

虽然 Docker 有一定的学习曲线和局限性,但其优势在大多数场景下远大于劣势,特别是在微服务、云原生和 DevOps 实践中表现突出。

掌握 Docker 的基本使用是现代开发者的重要技能,通过本文介绍的步骤,你可以开始使用 Docker 并逐步深入探索其更多高级特性。

http://www.xdnf.cn/news/1102465.html

相关文章:

  • SpringCloud之Ribbon
  • 从延迟测试误区谈起:SmartPlayer为何更注重真实可控的低延迟?
  • 飞算JavaAI 实战笔记
  • 从零实现一个GPT 【React + Express】--- 【3】解析markdown,处理模型记忆
  • 继承和多态扩展学习
  • 没有Mac如何完成iOS 上架:iOS App 上架App Store流程
  • Django--02模型和管理站点
  • 【Springboot】Bean解释
  • CPT203-Software Engineering: Project Managent 项目管理
  • 继承 示例
  • 飞算 JavaAI:开启 Java 开发新时代
  • 使用Python将目录中的JPG图片按后缀数字从小到大顺序纵向拼接,很适合老师发的零散图片拼接一个图片
  • Set 二分 -> 剑指算法竞赛
  • 【9】PostgreSQL 之 vacuum 死元组清理
  • Ant ASpin自定义 indicator 报错
  • 模拟开关、可编程增益仪表放大器电路
  • VLM-R1 + GRPO 算法完整复现全过程日志
  • 随手记录第二十话 -- Python3版本虚拟环境安装与AI的接入使用
  • RuoYi+Uniapp(uni-ui)开发商城系统
  • python学习DataFrame数据结构
  • 数据结构第一章复杂度的认识
  • 【java17】使用 Word 模板导出带替换符、动态表格和二维码的文档
  • iOS 数组如何设计线程安全
  • 提示工程:突破Transformer极限的计算科学
  • 工具分享--IP与域名提取工具
  • Spring 声明式事务:从原理到实现的完整解析
  • 小架构step系列11:单元测试引入
  • 分享|2025年机器学习工程师职业技术证书报考指南
  • 如何使用 Python 删除 Excel 中的行、列和单元格 – 详解
  • 《探索电脑麦克风声音采集多窗口实时可视化技术》