Skip to main content

Docker 容器化部署实战入门

·487 words·1 min

概述
#

本文介绍 Docker 的基本概念和实际部署流程。

Docker 是什么?
#

Docker 是一个开源的应用容器引擎,让应用可以打包及其依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

核心概念
#

镜像 (Image)
#

镜像是只读模板,用于创建容器。可以理解为运行容器的"配方"。

# 拉取镜像
docker pull nginx:latest

# 查看本地镜像
docker images

# 搜索镜像
docker search nginx

容器 (Container)
#

容器是镜像的运行实例。可以看作是一个简单的 Linux 环境。

# 运行容器
docker run -d -p 8080:80 nginx

# 查看运行容器
docker ps

# 查看所有容器
docker ps -a

仓库 (Repository)
#

存放镜像的地方,分为公共仓库和私有仓库。

实战示例
#

部署 Node.js 应用
#

# Dockerfile
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]
# 构建镜像
docker build -t my-node-app .

# 运行容器
docker run -d -p 3000:3000 my-node-app

部署 MySQL
#

# 拉取镜像
docker pull mysql:8.0

# 运行容器
docker run -d \
  --name my-mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_DATABASE=myapp \
  -p 3306:3306 \
  -v mysql-data:/var/lib/mysql \
  mysql:8.0

Docker Compose
#

用于定义和运行多容器 Docker 应用。

# docker-compose.yml
version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - app

  app:
    build: ./app
    ports:
      - "3000:3000"
# 启动所有服务
docker-compose up -d

# 查看状态
docker-compose ps

# 停止所有服务
docker-compose down

最佳实践
#

  1. 使用 .dockerignore - 减少镜像大小
  2. 多阶段构建 - 减小生产镜像
  3. 非 root 用户 - 提高安全性
  4. 健康检查 - 确保容器正常运行
  5. 资源限制 - 防止资源耗尽

总结
#

Docker 简化了应用的部署和运维,是现代 DevOps 的必备技能。