Docker 入门指南:为什么程序员都在用它?

Docker 入门指南:为什么程序员都在用它?

很多刚接触后端或者部署的小伙伴,第一次听到 Docker 都会有一种感觉:

“这玩意是不是很复杂?”

实际上,Docker 真正火起来的原因只有一个:

它能让你的项目运行环境保持一致。

你本地能跑,服务器也能跑。
你朋友电脑能跑,生产环境也能跑。

不会再出现:

  • “我这里明明是好的”
  • “你是不是 Java 版本不对”
  • “你数据库环境有问题”
  • “你 Node 版本和我不一样”

这种经典互相甩锅现场。


一、Docker 到底是什么?

你可以把 Docker 理解成:

一个“轻量级虚拟机”。

但它和传统虚拟机不同:

对比 Docker 虚拟机
启动速度 秒级 分钟级
占用资源 很小 很大
环境隔离
是否方便部署 非常方便 一般

Docker 最大的核心价值:

环境一致性

比如:

你的项目需要:

  • Java 21
  • MySQL 8
  • Redis 7
  • Nginx

传统方式:

你需要一个个安装。

Docker:

直接运行别人写好的镜像即可。


二、Docker 的核心概念

1. 镜像(Image)

镜像可以理解成:

一个“系统模板”。

比如:

  • MySQL 镜像
  • Redis 镜像
  • Ubuntu 镜像

2. 容器(Container)

容器是镜像运行后的实例。

你可以理解成:

  • 镜像 = 安装包
  • 容器 = 正在运行的软件

3. 仓库(Repository)

Docker 官方镜像仓库:

  • Docker Hub

里面有大量现成环境。

比如:

1
docker pull mysql

就是从 Docker Hub 下载 MySQL。


三、安装 Docker

Windows

推荐直接安装:

  • Docker Desktop

官网:

1
https://www.docker.com/

安装完成后执行:

1
docker -v

出现版本号说明安装成功。


四、第一个 Docker 容器

运行一个 Ubuntu:

1
docker run -it ubuntu bash

解释:

参数 作用
run 创建并运行
-it 交互模式
ubuntu 镜像名
bash 启动 bash

第一次运行会自动下载镜像。

进入后:

1
ls

你会发现:

已经进入一个全新的 Linux 环境。

退出:

1
exit

五、Docker 常用命令

查看运行中的容器

1
docker ps

查看所有容器

1
docker ps -a

查看镜像

1
docker images

删除容器

1
docker rm 容器ID

删除镜像

1
docker rmi 镜像ID

停止容器

1
docker stop 容器ID

启动容器

1
docker start 容器ID

六、真正有价值的地方:环境搭建

下面来一个真实开发案例。


七、案例:5 分钟搭建 MySQL 环境

以前:

安装 MySQL 非常折磨:

  • 配环境变量
  • 改密码
  • 配编码
  • 配端口
  • 版本冲突

Docker:

一句命令解决。


拉取 MySQL 镜像

1
docker pull mysql:8.0

启动 MySQL

1
2
3
4
5
docker run -d \
--name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0

参数解释:

参数 含义
-d 后台运行
–name 容器名字
-p 端口映射
-e 环境变量

查看是否运行成功

1
docker ps

出现:

1
mysql8

说明成功。


进入 MySQL 容器

1
docker exec -it mysql8 bash

登录 MySQL:

1
mysql -uroot -p

输入密码:

1
123456

完成。


八、为什么 Docker 特别适合开发?

1. 一键搭环境

以前:

新电脑配置环境可能半天。

现在:

1
docker compose up

全部自动完成。


2. 不污染系统

MySQL 坏了?

删容器重建即可。

不会污染电脑。


3. 多版本共存

比如:

你可以同时拥有:

  • MySQL 5.7
  • MySQL 8
  • Redis 6
  • Redis 7

互不影响。


九、Docker Compose 是什么?

如果项目需要:

  • MySQL
  • Redis
  • Nginx
  • Java 服务

一个个启动会很麻烦。

于是有了:

Docker Compose

它可以:

一键启动整个项目环境。


十、Compose 示例

创建:

1
docker-compose.yml

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3'

services:
mysql:
image: mysql:8.0
container_name: mysql8
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456

redis:
image: redis
container_name: redis
ports:
- "6379:6379"

启动:

1
docker compose up -d

停止:

1
docker compose down

这时候:

  • MySQL
  • Redis

会同时启动。

这就是现代开发环境的主流方式。


十一、Docker 的实际应用场景

Docker 几乎已经覆盖整个开发领域:

场景 用途
后端开发 Java、Python、Go
前端部署 Nginx
数据库 MySQL、Redis
AI 模型部署
运维 自动化部署
微服务 Kubernetes

现在很多公司:

甚至要求开发必须会 Docker。


十二、学习建议

Docker 不建议死记命令。

最好的学习方式:

一边搭环境一边学

比如:

  • 搭 MySQL
  • 搭 Redis
  • 搭 Nginx
  • 搭博客
  • 搭 AI 服务

慢慢你就会发现:

Docker 本质上是在:

“标准化部署环境”。


十三、总结

Docker 最核心的价值:

“环境一致”

它解决了开发中最经典的问题:

“为什么你电脑能跑,我这里不行?”

学会 Docker 后:

你会发现:

搭环境开始变得像“拼积木”。


常用命令速查表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 查看版本
docker -v

# 拉取镜像
docker pull mysql

# 查看镜像
docker images

# 运行容器
docker run -d mysql

# 查看运行中的容器
docker ps

# 查看所有容器
docker ps -a

# 停止容器
docker stop 容器ID

# 启动容器
docker start 容器ID

# 删除容器
docker rm 容器ID

# 删除镜像
docker rmi 镜像ID

# 进入容器
docker exec -it 容器ID bash

结尾

如果你以前觉得:

“搭环境特别痛苦”

那 Docker 很可能会改变你的开发体验。

因为它真正做到了一件事:

“让环境变成可复制的东西”

这也是它能成为现代开发基础设施的原因。