Docker 已经成为现代软件开发和部署的标准工具。本文将带你从零开始,学习如何使用 Docker 搭建开发环境。
什么是 Docker?
Docker 是一个开源的容器化平台,它允许你将应用程序及其依赖打包成一个轻量级、可移植的容器。通过容器,你可以确保应用程序在任何环境中都能一致运行。
核心概念
镜像 (Image)
镜像是一个只读的模板,用来创建容器。你可以把它理解为程序的可执行文件。
容器 (Container)
容器是镜像的运行实例。你可以启动、停止、移动、删除容器。
仓库 (Repository)
仓库用于存放镜像,Docker Hub 是最大的公共仓库。
安装 Docker
# Ubuntu
sudo apt update
sudo apt install docker.io
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version
常用命令
镜像操作
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
容器操作
# 运行容器
docker run -d --name my-nginx -p 8080:80 nginx:latest
# 参数说明:
# -d: 后台运行
# --name: 容器名称
# -p 8080:80: 端口映射(主机端口:容器端口)
# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 停止容器
docker stop my-nginx
# 启动容器
docker start my-nginx
# 删除容器
docker rm my-nginx
进入容器
# 进入运行中的容器
docker exec -it my-nginx /bin/bash
# 查看容器日志
docker logs my-nginx
# 查看容器详细信息
docker inspect my-nginx
实战:搭建 Node.js 开发环境
创建一个 Dockerfile 来定义我们的开发环境:
# 使用官方 Node.js 镜像作为基础
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 复制 package.json
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制源代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动命令
CMD ["npm", "start"]
构建并运行:
# 构建镜像
docker build -t my-node-app .
# 运行容器
docker run -d -p 3000:3000 --name my-app my-node-app
使用 Docker Compose
Docker Compose 可以轻松管理多容器应用。创建 docker-compose.yml:
version: 3.8
services:
web:
build: .
ports:
- 3000:3000
volumes:
- .:/app
- /app/node_modules
environment:
- NODE_ENV=development
depends_on:
- db
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: secret
POSTGRES_DB: myapp
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
启动应用:
# 启动所有服务
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止所有服务
docker-compose down
最佳实践
- 使用多阶段构建减小镜像体积
- .dockerignore 文件排除不需要的文件
- 不要用 root 用户运行容器
- 合理使用 volumes 管理持久化数据
- 给镜像打上标签,方便管理
总结
Docker 是现代开发者的必备技能。通过容器化,我们可以轻松解决「在我机器上能跑」的问题,提高开发和部署效率。


发表回复