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

Docker 创建及部署完整流程

一、Docker 环境准备

1. 安装 Docker

  • Linux:

    curl -fsSL https://get.docker.com | sh
    sudo systemctl enable --now docker
    
  • Windows/macOS:
    下载 Docker Desktop

2. 验证安装

docker --version
docker run hello-world

二、Docker 镜像创建流程

1. 编写 Dockerfile

# 基础镜像
FROM node:16-alpine# 设置工作目录
WORKDIR /app# 复制文件
COPY package*.json ./
COPY . .# 安装依赖
RUN npm install# 暴露端口
EXPOSE 3000# 启动命令
CMD ["npm", "start"]

2. 构建镜像

docker build -t my-app:1.0 .

3. 查看镜像

docker images

三、Docker 容器运行

1. 运行容器

docker run -d -p 3000:3000 --name my-app-container my-app:1.0

2. 常用操作命令

# 查看运行中的容器
docker ps# 查看所有容器
docker ps -a# 停止容器
docker stop my-app-container# 启动已停止的容器
docker start my-app-container# 进入容器
docker exec -it my-app-container sh# 查看日志
docker logs -f my-app-container

四、Docker 部署方案

1. 单机部署

# 带环境变量运行
docker run -d -p 3000:3000 \-e NODE_ENV=production \--name my-app-prod \my-app:1.0

2. Docker Compose 部署

创建 docker-compose.yml:

version: '3.8'
services:app:image: my-app:1.0ports:- "3000:3000"environment:- NODE_ENV=productionvolumes:- ./logs:/app/logs

启动服务:

docker-compose up -d

3. 生产环境部署 (Swarm/Kubernetes)

Docker Swarm 示例:
# 初始化Swarm
docker swarm init# 部署服务
docker stack deploy -c docker-compose.yml my-app
Kubernetes 示例 (deployment.yaml):
apiVersion: apps/v1
kind: Deployment
metadata:name: my-app
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-appimage: my-app:1.0ports:- containerPort: 3000

五、镜像管理

1. 推送到 Docker Hub

# 登录
docker login# 标记镜像
docker tag my-app:1.0 username/my-app:1.0# 推送
docker push username/my-app:1.0

2. 私有仓库使用

# 拉取私有仓库镜像
docker pull registry.example.com/my-app:1.0# 推送镜像到私有仓库
docker tag my-app:1.0 registry.example.com/my-app:1.0
docker push registry.example.com/my-app:1.0

六、最佳实践

  1. 镜像优化:

    # 多阶段构建示例
    FROM node:16 as builder
    WORKDIR /app
    COPY . .
    RUN npm install && npm run buildFROM nginx:alpine
    COPY --from=builder /app/dist /usr/share/nginx/html
    
  2. 安全建议:

    • 不要以 root 用户运行容器
    • 定期更新基础镜像
    • 扫描镜像漏洞 (docker scan my-app:1.0)
  3. 监控与日志:

    # 查看资源使用
    docker stats# 日志驱动配置
    docker run --log-driver=syslog ...
    
  4. 网络配置:

    # 创建自定义网络
    docker network create my-network# 连接容器到网络
    docker run --network=my-network ...
    

七、常用工具链

  1. 开发工具:

    • Docker Desktop (GUI管理)
    • VS Code Docker 扩展
  2. CI/CD 集成:

    # GitHub Actions 示例
    jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- run: docker build -t my-app .
    
  3. 编排工具:

    • Docker Compose
    • Kubernetes
    • Docker Swarm
  4. 监控工具:

    • cAdvisor
    • Portainer (可视化管理)

按照这个流程,您可以完成从开发到生产的完整 Docker 应用生命周期管理。

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

相关文章:

  • spring jms使用
  • pnpm install 和 npm install 的区别
  • 力扣HOT100之堆:347. 前 K 个高频元素
  • 基于51单片机的三位电子密码锁
  • LDPC码的编码算法
  • 【2025CVPR】花粉识别新标杆:HieraEdgeNet多尺度边缘增强框架详解
  • C++中变量赋值有几种形式
  • [ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
  • Suna 开源 AI Agent 安装配置过程全解析(输出与交互详解)
  • 泊松圆盘采样进行随机选点
  • iOS26 深度解析:WWDC25 重磅系统的设计革新与争议焦点
  • 聊一聊 - 如何像开源项目一样,去设计一个组件
  • (五)docker环境中配置hosts
  • React19源码系列之 事件插件系统
  • 鹰盾视频的AI行为检测是怎样的风控?
  • 黑马python(二)
  • 分析VSS,VCC和VDD
  • 206. 2013年蓝桥杯省赛 - 打印十字图(困难)- 模拟
  • 第三章支线五 ·组件之城 · 构建与复用的魔法工坊
  • 基于数字孪生的水厂可视化平台建设:架构与实践
  • nsight system分析LLM注意事项
  • PI数据库全面解析:原理、应用、行业案例与优劣对比
  • MySQL学习之触发器
  • Oracle实用参考(13)——Oracle for Linux ASM+RAC环境搭建(1)
  • 【AI News | 20250610】每日AI进展
  • 2.Vue编写一个app
  • Python实例题:Python计算实变函数
  • python打卡第50天
  • 题单:二分查找(==x个数)
  • 纯血Harmony NETX 5 打造趣味五子棋:(附源文件)