Docker 入门手册——从安装到第一个容器

Docker 入门手册——从安装到第一个容器

作者: CaoZH
日期: 2022-06-15
本文为原创教程


Docker 从 2013 年诞生至今,已经成为软件开发领域不可或缺的基础设施。无论你是前端、后端还是运维,掌握 Docker 已经成为一项基本技能。

本文不讲虚的,从零开始带你装好 Docker、跑起第一个容器。

一、Docker 是什么?

一句话:Docker 是一个容器化平台,让你把应用和它的依赖打包在一起运行。

容器 vs 虚拟机

特性 容器(Docker) 虚拟机
启动速度 秒级 分钟级
资源占用 低(共享内核) 高(独立内核)
镜像大小 MB 级 GB 级
隔离性 进程级 硬件级

二、安装 Docker

Ubuntu/Debian

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
sudo docker --version

CentOS

1
2
3
4
5
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

非 root 用户执行 Docker

每次敲 sudo docker 很烦,把用户加入 docker 组:

1
2
sudo usermod -aG docker $USER
# 重新登录后生效

三、核心概念

概念 说明 类比
镜像(Image) 只读模板,包含应用和依赖 类(Class)
容器(Container) 镜像的运行实例 对象(Instance)
Dockerfile 镜像构建脚本 食谱
仓库(Registry) 镜像存储中心 App Store
卷(Volume) 持久化数据 U 盘

四、Docker 常用命令

镜像管理

1
2
3
4
5
6
7
8
9
10
11
12
# 拉取镜像
docker pull nginx:latest
docker pull ubuntu:20.04

# 查看本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

# 构建镜像
docker build -t my-app:1.0 .

容器操作

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
# 运行容器
docker run -d --name my-nginx -p 8080:80 nginx:latest

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

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止)
docker ps -a

# 停止容器
docker stop my-nginx

# 启动已停止的容器
docker start my-nginx

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

# 查看容器日志
docker logs -f my-nginx

# 删除容器
docker rm my-nginx

数据持久化

1
2
3
4
# 使用卷
docker run -d --name my-nginx \
-v /host/path:/usr/share/nginx/html \
-p 8080:80 nginx:latest

五、实战:运行一个 Nginx 服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1. 拉取 Nginx 镜像
docker pull nginx:alpine

# 2. 创建本地 HTML 文件
mkdir -p ~/docker-nginx/html
echo '<h1>Hello Docker!</h1>' > ~/docker-nginx/html/index.html

# 3. 运行容器,挂载本地目录
docker run -d \
--name my-site \
-p 8080:80 \
-v ~/docker-nginx/html:/usr/share/nginx/html \
nginx:alpine

# 4. 访问
# http://localhost:8080

# 5. 查看日志
docker logs my-site

# 6. 停止并删除
docker stop my-site
docker rm my-site

六、总结

完成这篇教程后你应该能:

  • ✅ 在 Linux 上安装 Docker
  • ✅ 理解镜像和容器的关系
  • ✅ 使用常用 Docker 命令
  • ✅ 运行和管理容器
  • ✅ 挂载数据卷持久化

下一步可以学习 Docker Compose(多容器编排)和 Dockerfile(自定义镜像构建)。


首发于 CaoZH 的笔记