Docker 入门实战 – 从零搭建开发环境

什么是 Docker

Docker 是一个开源的容器化平台,让开发者可以将应用程序和依赖打包成一个轻量级的容器,在任何环境中运行。「在我机器上能跑」的问题从此成为历史。

Docker 核心概念

镜像(Image)

镜像是一个只读的模板,包含应用程序和运行所需的一切。类似于编程中的「类」。

容器(Container)

容器是镜像的运行实例。类似于编程中的「对象」。可以创建、启动、停止、删除。

仓库(Registry)

仓库用于存储和分发镜像。Docker Hub 是最大的公共仓库。

安装 Docker

macOS

# 使用 Homebrew 安装
brew install --cask docker

# 或者下载 Docker Desktop
# 访问 https://www.docker.com/products/docker-desktop

验证安装

docker --version
docker run hello-world

核心命令

镜像操作

# 拉取镜像
docker pull nginx:latest

# 查看本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

容器操作

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

# 参数说明:
# -d: 后台运行
# -p 8080:80: 端口映射(主机:容器)
# --name: 容器名称

# 查看运行中的容器
docker ps

# 进入容器
docker exec -it my-nginx bash

实战:搭建开发环境

1. Node.js 开发环境

docker run -d -p 3000:3000 -v $(pwd):/app -w /app node:latest npm start

2. MySQL 数据库

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret --name mysql mysql:8

3. Redis 缓存

docker run -d -p 6379:6379 --name redis redis:alpine

Docker Compose

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

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
volumes:
  mysql_data:
# 启动所有服务
docker-compose up -d

# 停止所有服务
docker-compose down

常见问题

Q: 容器和虚拟机有什么区别?

容器共享宿主机的内核,更轻量(秒级启动),资源占用更少。虚拟机需要完整操作系统,开机慢但隔离性更强。

Q: 如何备份容器数据?

使用数据卷(Volumes)存储重要数据,定期备份数据卷目录。

总结

Docker 是现代开发的必备技能。掌握 Docker,你可以快速搭建开发环境、部署应用程序、实现 CI/CD 自动化。建议每个开发者都学习 Docker。

☁️
阿里云 推荐

想要稳定快速的服务器?推荐使用阿里云 ECS,新用户首年仅需百余元。

💰 佣金比例:7-15%
立即查看 →

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注