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

Docker Desktop 解决从开发到部署的高效容器化工作流问题

一、基本概念

Docker

Docker 是一个开源的容器化平台,提供了一种轻量级的方式来打包、运行和管理应用程序及其依赖项。通过 Docker,你可以:

  1. 容器化应用程序:将代码、依赖项和配置打包成一个独立的容器镜像。
  2. 便携性:一次构建,随处运行,无论是开发环境、测试环境还是生产环境。
  3. 高效资源利用:容器共享操作系统内核,比虚拟机更轻量。
Kubernetes (K8s)

Kubernetes 是一个用于自动化容器部署、扩展和管理的开源平台。它的主要功能包括:

  1. 容器编排:管理多个容器应用(如负载均衡、服务发现)。
  2. 自动扩展:根据负载自动扩展或缩减容器实例。
  3. 高可用性:支持容错机制,自动恢复失败的容器。
  4. 滚动更新和回滚:安全地更新应用而不会造成中断。

二、开发、调试、部署、打包和交付

1. 安装 Docker Desktop
  1. 下载并安装 Docker Desktop。
  2. 启动 Docker Desktop,并确保 Docker Daemon 运行正常。

2. 开发
  1. 创建 Dockerfile
    Dockerfile 是 Docker 容器镜像的构建脚本,定义了基础镜像、依赖安装、代码拷贝等操作。

    示例:

    # 使用官方 Node.js 镜像作为基础镜像
    FROM node:16
    
    # 设置工作目录
    WORKDIR /app
    
    # 拷贝 package.json 并安装依赖
    COPY package.json .
    RUN npm install
    
    # 拷贝代码
    COPY . .
    
    # 暴露应用运行的端口
    EXPOSE 3000
    
    # 启动命令
    CMD ["npm", "start"]
    
  2. 构建镜像

    docker build -t my-node-app .
    
  3. 运行容器

    docker run -p 3000:3000 my-node-app
    

    访问 http://localhost:3000 验证是否正常运行。


3. 调试
  1. 挂载代码和实时热更新
    使用挂载功能在容器中实时加载本地代码:

    docker run -p 3000:3000 -v $(pwd):/app my-node-app
    
  2. 查看容器日志

    docker logs <CONTAINER_ID>
    
  3. 进入容器

    docker exec -it <CONTAINER_ID> sh
    

4. 部署
  1. 编写 docker-compose.yml
    使用 Docker Compose 管理多容器应用。

    示例:

    version: '3.8'
    services:
      app:
        build: .
        ports:
          - "3000:3000"
        volumes:
          - .:/app
        environment:
          NODE_ENV: production
    
  2. 启动服务

    docker-compose up
    

5. 打包和交付
  1. 将镜像推送到 Docker Hub

    • 登录 Docker Hub:
      docker login
      
    • 打标签:
      docker tag my-node-app mydockerhubusername/my-node-app:1.0
      
    • 推送镜像:
      docker push mydockerhubusername/my-node-app:1.0
      
  2. 在目标服务器拉取镜像并运行

    docker pull mydockerhubusername/my-node-app:1.0
    docker run -p 3000:3000 mydockerhubusername/my-node-app:1.0
    

三、案例:一个 Node.js Web 应用的基本流程

步骤 1: 初始化项目
  1. 创建项目目录并初始化 Node.js:

    mkdir my-web-app
    cd my-web-app
    npm init -y
    npm install express
    
  2. 创建 index.js 文件:

    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello, Docker!');
    });
    
    app.listen(3000, () => {
      console.log('Server running on port 3000');
    });
    
  3. 创建 Dockerfile

    FROM node:16
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["node", "index.js"]
    

步骤 2: 构建镜像
docker build -t my-web-app .

步骤 3: 运行容器
docker run -p 3000:3000 my-web-app

访问 http://localhost:3000,检查输出。


步骤 4: 使用 Docker Compose
  1. 创建 docker-compose.yml

    version: '3.8'
    services:
      web:
        build: .
        ports:
          - "3000:3000"
    
  2. 启动服务:

    docker-compose up
    

步骤 5: 部署到云
  1. 将镜像推送到 Docker Hub:

    docker tag my-web-app mydockerhubusername/my-web-app:1.0
    docker push mydockerhubusername/my-web-app:1.0
    
  2. 在云服务器上运行:

    docker pull mydockerhubusername/my-web-app:1.0
    docker run -d -p 80:3000 mydockerhubusername/my-web-app:1.0
    

四、关于工具授权

1. Docker Desktop
  • 免费版本:个人使用和小型团队使用 Docker Desktop 是免费的。
  • 付费版本(Docker Pro、Team、Business)
    • 针对企业用户(如果公司收入超过一定金额,可能需要订阅)。
    • 提供高级功能(如额外的安全扫描和团队管理工具)。
  • 开发环境:对于个人开发、调试和本地部署,免费版完全足够。

2. Docker Hub
  • 免费版
    • 可以创建公共镜像仓库(公开可见)。
    • 每月有一定的免费拉取配额(匿名用户 100 次,登录用户 200 次)。
  • 付费版
    • 私有镜像仓库:适合团队或想保护代码的用户。
    • 更高的拉取配额和自动构建功能。
  • 建议:如果是个人开发者或公共项目,免费版足够。

3. Kubernetes(如本地 Minikube 或云服务)
  • 免费方案
    • 在本地使用 Minikube 或 MicroK8s 可以完全免费构建 Kubernetes 环境。
    • Docker Desktop 自带一个单节点 Kubernetes 集成,适合本地调试(免费)。
  • 付费服务(托管 Kubernetes 平台)
    • 像 AWS EKS、Google GKE 和 Azure AKS 等云端托管服务可能需要付费,但通常有免费层支持小规模实验。

4. 云服务器(可选项)
  • 免费云服务
    • 云提供商(如 AWS、Azure、Google Cloud)通常提供免费的试用计划:
      • AWS 有 12 个月免费层(EC2 和 S3 存储)。
      • Google Cloud 提供 $300 免费信用额度。
      • Azure 提供类似的免费试用。
  • 付费云服务
    • 如果超出免费层限制,则需要付费(按使用量收费)。
    • 部署到云服务器可能产生带宽和存储费用。

5. 工具和资源
  • IDE(可选)
    • 使用 VS Code 或 IntelliJ IDEA 开发 Docker 项目。
    • 这些工具的基础版本通常是免费的。
  • CI/CD 工具(可选)
    • 免费方案:GitHub Actions、GitLab CI/CD 提供免费额度。
    • 付费方案:规模更大时可能需要升级为付费计划。

哪些情况下需要付费?
  1. 团队协作和企业用途
    • Docker Desktop 的企业版。
    • Docker Hub 私有镜像仓库。
  2. 更大规模部署
    • 托管 Kubernetes 服务(如 AWS EKS)。
    • 超出云服务免费层限制。
  3. 高级功能
    • 安全扫描工具(如 Docker Pro 提供的扫描)。
    • 自动化构建、更高拉取限额等功能。

五、总结

Docker Desktop 提供了一套完整的容器化开发到部署工具链,通过 Dockerfile 定义环境、Compose 编排多服务、Docker Hub 实现镜像托管与交付,形成高效的跨平台开发流程。对于个人开发者或小型项目,免费方案可覆盖全流程需求(开发、调试、打包、交付),无需额外成本。

若涉及 团队协作(需共享开发环境)、私有镜像库(替代 Docker Hub 免费版限制)或 大规模生产部署(如高可用集群),则需要结合 Kubernetes 扩展容器管理能力,并选择企业级付费服务(如 Docker Team 订阅、云厂商容器服务)。初学者和个人项目建议从免费工具切入,待复杂度提升时逐步引入高级方案,实现从轻量级到生产级场景的平滑过渡。


http://www.kler.cn/a/522876.html

相关文章:

  • 神经网络|(五)概率论基础知识-条件概率
  • 第3章 基于三电平空间矢量的中点电位平衡策略
  • 机器学习-线性回归(对于f(x;w)=w^Tx+b理解)
  • Cross-Resolution知识蒸馏论文学习
  • 01-02 三元组与七元组
  • 如何把obsidian的md文档导出成图片,并加上文档属性
  • Java基础教程(007):方法的重载与方法的练习
  • Linux(NTP配置)
  • JavaEE:多线程编程中的同步与并发控制
  • 逻辑学起码常识凸显级数论有重大错误:将两相同级数误为相异级数
  • WGCLOUD运维工具从入门到精通 - 如何设置主题背景
  • Rust语言进阶之迭代器:iter用法实例(九十)
  • 在docker上部署nacos
  • FPGA 23 ,使用 Vivado 实现花式跑马灯( 使用 Vivado 实现花式流水灯,采用模块化编程,从按键消抖到LED控制 )
  • Hive:基本查询语法
  • R语言机器学习算法实战系列(十九)特征选择之Monte Carlo算法(Monte Carlo Feature Selection)
  • 内存泄漏的通用排查方法
  • 《Vision Transformer》论文精读:在大量足够数据量的条件下纯Transformer也能在图像分类任务中比肩SOTA
  • 蓝桥杯例题四
  • 基于微信小程序的社团活动助手php+论文源码调试讲解
  • 电力晶体管(GTR)全控性器件
  • 【Qt】文件操作
  • 打造专业PPT幻灯片布局的实用策略
  • 深入浅出Linux操作系统大数据定制Shell编程(六)
  • 2000-2020年各省第二产业增加值占GDP比重数据
  • 在线免费快速无痕去除照片海报中的文字logo