Docker 容器化部署

👉 回答思路:从开发 → 打包 → 部署,结合实际项目。

① 使用场景

  • 用 Docker 来解决环境一致性问题,比如前端 Node.js 构建环境、后端 Java/SpringBoot 服务,甚至 MySQL、Redis。
  • 本地开发时用 docker-compose 来快速启动多个服务。

② 容器化部署步骤

  1. 编写 Dockerfile

    # 以 Node.js 项目为例
    FROM node:18-alpine
    WORKDIR /app
    COPY package*.json ./
    RUN npm install --production
    COPY . .
    CMD ["npm", "start"]
    
  2. 构建镜像

    docker build -t myapp:v1 .
    
  3. 运行容器

    docker run -d -p 3000:3000 myapp:v1
    
  4. 线上部署

    • 单机部署:直接 run 容器。
    • 多服务:用 docker-compose 管理。
    • 集群部署:Kubernetes / Docker Swarm。


🔑 Docker 常见用法总结

1. 镜像管理

  • 拉取镜像:

    docker pull nginx:latest
    
  • 查看本地镜像:

    docker images
    
  • 删除镜像:

    docker rmi nginx
    

2. 容器管理

  • 运行容器:

    docker run -d --name my-nginx -p 8080:80 nginx
    

    启动一个 nginx 容器,映射本地 8080 → 容器 80。

  • 查看容器:

    docker ps           # 运行中的容器
    docker ps -a        # 包括已退出的
    
  • 停止 / 启动容器:

    docker stop my-nginx
    docker start my-nginx
    
  • 删除容器:

    docker rm my-nginx
    

3. 进入容器 & 调试

  • 进入容器终端:

    docker exec -it my-nginx /bin/bash
    
  • 查看容器日志:

    docker logs -f my-nginx
    

4. 数据卷(Volume)

  • 容器和宿主机之间共享数据:

    docker run -d -v /host/data:/container/data my-app
    

5. 网络管理

  • 查看网络:

    docker network ls
    
  • 创建网络并连接容器:

    docker network create my-net
    docker run -d --name db --network my-net mysql
    docker run -d --name app --network my-net my-app
    

    这样 app 容器里可以用 db:3306 访问数据库。


6. 自定义镜像(Dockerfile)

  • 写一个 Dockerfile:

    FROM node:18
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    CMD ["npm", "start"]
    
  • 构建镜像:

    docker build -t my-node-app .
    

7. Docker Compose

  • 编排多个容器(如前端 + 后端 + 数据库):

    version: '3'
    services:
      web:
        build: .
        ports:
          - "3000:3000"
      db:
        image: mysql
        environment:
          MYSQL_ROOT_PASSWORD: root
    
  • 启动:

    docker-compose up -d
    

✅ 总结

我常用 Docker 做几件事:

  • 镜像管理,比如 docker pull 拉取镜像,docker build 自定义镜像;
  • 容器管理,比如 docker run 启动,docker ps 查看,docker logs 调试;
  • 数据持久化会用 Volume 映射宿主机目录;
  • 多容器场景下会用 Docker Compose 做服务编排。
    实际开发中,比如部署前端项目,我会写一个 Dockerfile,把应用打包进镜像,然后 docker run -p 映射端口,就能快速跑起来。
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐